triangle_reflection_complex/enumerate_triangle_group.h

31 lines
997 B
C

#ifndef ENUMERATE_TRIANGLE_GROUP_H
#define ENUMERATE_TRIANGLE_GROUP_H
#include "mat.h"
#include "coxeter.h"
#include <mps/mps.h>
// 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