21
22
extern void compute_CS_value_from_fudge(Triangulation *manifold);
22
23
extern void compute_CS_fudge_from_value(Triangulation *manifold);
24
26
* Compute the Chern-Simons value in terms of the fudge factor, and
25
27
* vice-versa. Please see chern_simons.c for details.
189
191
extern void compute_three_edge_lengths( Tetrahedron *tet,
192
double known_length);
194
196
* Sets tet->cross_section->edge_length[v][f] to known_length, computes
195
197
* the remaining two edge_lengths at vertex v in terms of it, and sets
509
511
extern void copy_curves_to_scratch( Triangulation *manifold,
511
Boolean double_copy_on_tori);
513
Boolean Real_copy_on_tori);
513
515
* Copies the current peripheral curves to the scratch_curves[which_set]
514
516
* fields of the manifold's Tetrahedra. If double_copy_on_tori is TRUE,
655
657
extern void o31_invert(O31Matrix m, O31Matrix m_inverse);
656
658
extern FuncResult gl4R_invert(GL4RMatrix m, GL4RMatrix m_inverse);
657
659
extern void o31_product(O31Matrix a, O31Matrix b, O31Matrix product);
658
extern Boolean o31_equal(O31Matrix a, O31Matrix b, double epsilon);
659
extern double o31_deviation(O31Matrix m);
660
extern Boolean o31_equal(O31Matrix a, O31Matrix b, Real epsilon);
661
extern Real o31_deviation(O31Matrix m);
660
662
extern void o31_GramSchmidt(O31Matrix m);
661
663
extern void o31_conjugate(O31Matrix m, O31Matrix t, O31Matrix Tmt);
662
extern double o31_inner_product(O31Vector u, O31Vector v);
664
extern Real o31_inner_product(O31Vector u, O31Vector v);
663
665
extern void o31_matrix_times_vector(O31Matrix m, O31Vector v, O31Vector product);
664
extern void o31_constant_times_vector(double r, O31Vector v, O31Vector product);
666
extern void o31_constant_times_vector(Real r, O31Vector v, O31Vector product);
665
667
extern void o31_copy_vector(O31Vector dest, O31Vector source);
666
668
extern void o31_vector_sum(O31Vector a, O31Vector b, O31Vector sum);
667
669
extern void o31_vector_diff(O31Vector a, O31Vector b, O31Vector diff);
780
782
/************************************************************************/
782
extern int decimal_places_of_accuracy(double x, double y);
784
extern int decimal_places_of_accuracy(Real x, Real y);
783
785
extern int complex_decimal_places_of_accuracy(Complex x, Complex y);
785
787
* Returns the number of decimal places which x and y have in
858
860
extern FuncResult solve_complex_equations(Complex **complex_equations,
859
861
int num_rows, int num_columns, Complex *solution);
860
extern FuncResult solve_real_equations(double **real_equations,
861
int num_rows, int num_columns, double *solution);
862
extern FuncResult solve_real_equations(Real **real_equations,
863
int num_rows, int num_columns, Real *solution);
863
865
* These functions solve num_rows linear equations in num_columns
864
866
* variables. For more information, see solve_equations.c.
872
874
/************************************************************************/
874
extern Triangulation *subdivide(Triangulation *manifold, char *new_name);
876
extern Triangulation *subdivide(Triangulation *manifold,
877
const char *new_name);
876
879
* Returns a pointer to a subdivision of *manifold. See subdivide.c for
877
880
* more details. subdivide() does not change *manifold in any way.
1018
1021
/************************************************************************/
1020
extern double safe_acos(double x);
1021
extern double safe_asin(double x);
1022
extern double safe_sqrt(double x);
1023
extern Real safe_acos(Real x);
1024
extern Real safe_asin(Real x);
1025
extern Real safe_sqrt(Real x);
1024
1027
* These are like the usual acos(), asin() and sqrt(),
1025
1028
* except that they round almost-legal values to legal ones.
1026
1029
* E.g. safe_acos(1.00000001) = acos(1.0) = 0.0, not NaN.
1029
extern double arcsinh(double x);
1030
extern double arccosh(double x);
1032
extern Real arcsinh(Real x);
1033
extern Real arccosh(Real x);
1032
1035
* The inverse hyperbolic sine and cosine, which the standard ANSI
1033
1036
* libraries lack. [Some but not all platforms now include asinh()