2022-01-31 01:09:56 +00:00
|
|
|
#ifndef ENUMERATE_TRIANGLE_GROUP_H
|
|
|
|
#define ENUMERATE_TRIANGLE_GROUP_H
|
|
|
|
|
|
|
|
#include "mat.h"
|
|
|
|
#include "coxeter.h"
|
|
|
|
|
|
|
|
#include <mps/mps.h>
|
|
|
|
|
2022-04-14 00:23:38 +00:00
|
|
|
// rational only functions
|
2022-02-05 23:51:45 +00:00
|
|
|
int solve_characteristic_polynomial(mps_context *solv, mps_monomial_poly *poly, mpq_t tr, mpq_t trinv, double *eigenvalues);
|
2022-01-31 01:09:56 +00:00
|
|
|
void continued_fraction_approximation(mpq_t out, double in, int level);
|
2022-04-14 00:23:38 +00:00
|
|
|
|
|
|
|
// 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);
|
2022-01-31 01:09:56 +00:00
|
|
|
char *print_word(groupelement_t *g, char *str);
|
2022-04-14 00:23:38 +00:00
|
|
|
void enumerate_triangle_rotation_subgroup(group_t *group, mat *gen, mat *matrices);
|
2022-01-31 01:09:56 +00:00
|
|
|
|
|
|
|
#endif
|