1
0

Introduce complex solvers

This commit is contained in:
David Allemang
2021-11-12 15:06:29 -05:00
parent fa13493569
commit bdecf40345
10 changed files with 363 additions and 23 deletions

View File

@@ -166,7 +166,7 @@ namespace tc {
/**
* Assumes that g is a coxeter group - that is, self-adjoint and the diagonal is 2.
*/
tc::Cosets solve(const Group &group, const std::vector<unsigned int> &sub_gens = {}) {
tc::Cosets solve(const Group &group, const Symbol &s_gens) {
size_t rank = group.rank();
tc::Cosets cosets(rank);
@@ -176,7 +176,7 @@ namespace tc {
return cosets;
}
for (unsigned int gen: sub_gens) {
for (unsigned int gen: s_gens) {
if (gen < rank)
cosets.put(0, gen, 0);
}
@@ -223,4 +223,18 @@ namespace tc {
return cosets;
}
/**
* Solve the cosets generated by sg_gens within the subgroup generated by g_gens of the group context
*/
Cosets solve(
const Group &context,
const Symbol &g_gens,
const Symbol &sg_gens
) {
const Symbol &proper_sg_gens = recontext_gens(context.rank(), g_gens, sg_gens);
const Group &group = subgroup(context, g_gens);
return solve(group, proper_sg_gens);
}
}