forked from mirror/toddcox-faster
Introduce complex solvers
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user