triangle_reflection_complex/enumerate.c

25 lines
532 B
C
Raw Normal View History

#include "enumerate.h"
#define LOOP(i,n) for(int i = 0; i < (n); i++)
void enumerate_coxeter_group(group_t *group, mat *gen, mat *matrices)
{
TYPE t = GETTYPE(gen[0]->x[0]);
mat_workspace *ws;
ws = mat_workspace_init(3, t);
mat_identity(matrices[0]);
for(int i = 1; i < group->size; i++) {
if(!group->elements[i].inverse)
continue;
int parent = group->elements[i].parent->id;
int letter = group->elements[i].letter;
mat_multiply(ws, matrices[i], matrices[parent], gen[letter]);
}
mat_workspace_clear(ws);
}