specialized routine to generate cosets for <bcd..> \ D2n

This commit is contained in:
Florian Stecker
2018-12-01 20:56:23 -08:00
parent 4342a1f3e5
commit d3336bab00
3 changed files with 148 additions and 9 deletions

View File

@@ -110,12 +110,12 @@ static void generate_principal_ideals(doublequotient_t *dq, bitvec_t *pos, bitve
}
#ifdef _DEBUG
if(is_slim[i]) {
fprintf(stderr, " ids: [0");
for(int j = 1; j < size; j++)
if(principal[j])
fprintf(stderr, ", %d", dq->cosets[j].min->id);
fprintf(stderr, "]\n");
if(is_slim[i] && dq->cosets[0].min) { // sometimes we don't want to define min and max
fprintf(stderr, " ids: [0");
for(int j = 1; j < size; j++)
if(principal[j])
fprintf(stderr, ", %d", dq->cosets[j].min->id);
fprintf(stderr, "]\n");
}
#endif
@@ -160,7 +160,7 @@ long enumerate_balanced_thickenings(doublequotient_t *dq, enumeration_callback c
// the algorithm only works if the opposition pairing does not stabilize any element
// if this happens, there can be no balanced thickenings
for(int i = 0; i < dq->count; i++)
if(dq->cosets[i].opposite->min->id == dq->cosets[i].min->id)
if(dq->cosets[i].opposite->index == i)
return 0;
// we can only handle bitvectors up to BV_BLOCKSIZE*BV_RANK bits, but we only store half of the weyl group