#ifndef ENUMERATE_TRIANGLE_GROUP_H #define ENUMERATE_TRIANGLE_GROUP_H #include "mat.h" #include "coxeter.h" #include // rational only functions int solve_characteristic_polynomial(mps_context *solv, mps_monomial_poly *poly, mpq_t tr, mpq_t trinv, double *eigenvalues); void continued_fraction_approximation(mpq_t out, double in, int level); // geneartors void generators_triangle_rotation_generic(mat *gen, NUMBER rho1, NUMBER rho2, NUMBER rho3, NUMBER s, NUMBER q); #ifdef QEXT_TRIVIAL void generators_triangle_rotation_2346_rational(mat *gen, int p1, int p2, int p3, mpq_t s, mpq_t q); #endif #ifdef QEXT_SQRT5 void generators_triangle_rotation_555_barbot(mat *gen, mpq_t s, mpq_t q); #endif // general functions void quartic(NUMBER out, NUMBER in, int a, int b, int c, int d, int e); void discriminant(NUMBER out, NUMBER x, NUMBER y); char *print_word(groupelement_t *g, char *str); void enumerate_triangle_rotation_subgroup(group_t *group, mat *gen, mat *matrices); #endif