8#ifndef SRC_LIB_FOUNDATIONS_RING_THEORY_RING_THEORY_H_
9#define SRC_LIB_FOUNDATIONS_RING_THEORY_RING_THEORY_H_
12namespace layer1_foundations {
13namespace ring_theory {
50 void init(
int q,
int verbose_level);
59 int add(
int i,
int j);
60 int mult(
int i,
int j);
64 int f_complete,
int *base_cols,
65 int f_P,
int *P,
int m,
int n,
int Pn,
97 std::string *symbols_latex;
99 char **monomial_symbols;
100 char **monomial_symbols_latex;
101 char **monomial_symbols_easy;
114 int *Affine_to_monomial;
138 int f_init_incidence_structure,
149 const char *symbol_mask,
const char *symbol_mask_latex,
153 const char *symbol_mask,
const char *symbol_mask_latex,
161 int *&Kernel,
int &dim_kernel,
int verbose_level);
178 int *coeffs,
int nb_terms_per_line,
179 const char *new_line_text);
181 std::ostream &ost,
long int *coeffs,
int nb_terms_per_line,
182 const char *new_line_text);
184 long int *Pts,
int &nb_pts,
int verbose_level);
187 std::vector<long int> &Pts,
190 long int *&Pts,
int &nb_pts,
int verbose_level);
192 std::vector<long int> &Pts,
197 int *Mtx_inv,
int verbose_level);
199 int f_semilinear,
int frob_power,
int *Mtx_inv,
202 int *coeff_in,
int *coeff_out,
203 int *Pt1_coeff,
int *Pt2_coeff,
206 int *coeff_in,
int scalar,
int *coeff_out,
209 int *coeff1,
int *coeff2,
int *coeff3,
212 int *coeff1,
int *coeff2,
int *coeff3,
220 int &a1,
int &a2,
int &a3,
int &a4,
int &a6,
294 int b,
int *&rep,
int &len);
325 int *&exponents,
int verbose_level);
327 int *&primes,
int *&exponents,
344 void power_mod(
char *aa,
char *bb,
char *nn,
348 int n,
int q,
int f_semilinear);
378 char &
ith(
int i) {
return r[i]; };
381 char *&
rep() {
return r; };
382 void create(
long int i,
const char *file,
int line);
397 std::ostream&
print(std::ostream& ost);
450 void apply(
int *eqn_in,
485 double *lambda,
int verbose_level);
488 double lambda,
int verbose_level);
508 void print(std::ostream &ost);
529 std::string &fname_code,
530 std::string &A_coeffs, std::string &B_coeffs,
534 std::string &A_coeffs, std::string &B_coeffs,
int verbose_level);
537 std::string &A_coeffs, std::string &B_coeffs,
int verbose_level);
540 std::string &A_coeffs, std::string &B_coeffs, std::string &M_coeffs,
544 std::string &A_coeffs,
548 long int rk0,
long int rk1,
int verbose_level);
551 long int rk0,
long int rk1,
int verbose_level);
554 long int rk0,
long int rk1,
int verbose_level);
557 std::string &input_file,
long int rk1,
int verbose_level);
560 std::string &input_file,
long int rk1,
int k,
int verbose_level);
563 std::string &variety_label_txt,
564 std::string &variety_label_tex,
565 int variety_nb_vars,
int variety_degree,
566 std::vector<std::string> &Variety_coeffs,
568 std::string &number_of_conditions_satisfied_fname,
569 std::string &label_txt,
570 std::string &label_tex,
571 int &nb_pts,
long int *&Pts,
576 std::string &variety_label_txt,
577 std::string &variety_label_tex,
578 int variety_nb_vars,
int variety_degree,
579 std::vector<std::string> &Variety_coeffs,
581 std::string &label_txt,
582 std::string &label_tex,
583 int &nb_pts,
long int *&Pts,
588 std::string &variety_label,
589 std::string &variety_label_tex,
590 int variety_nb_vars,
int variety_degree,
591 std::string &variety_coeffs,
593 std::string &label_txt,
594 std::string &label_tex,
595 int &nb_pts,
long int *&Pts,
600 std::string &variety_label_txt,
601 std::string &variety_label_tex,
602 int curve_nb_vars,
int curve_degree,
603 std::string &curve_coeffs,
605 std::string &label_txt,
606 std::string &label_tex,
607 int &nb_pts,
long int *&Pts,
614 long int *cyclotomic_set,
int cylotomic_set_size,
624 int n,
int start_idx,
627 int d, std::vector<std::vector<int> > &Table,
630 int d,
int verbose_level);
632 int deg,
int verbose_level);
634 int p_min,
int p_max,
635 int deg_min,
int deg_max,
638 int degree,
int verbose_level);
640 int n_min,
int n_max,
int verbose_level);
642 int *coeffs,
int f_poly, std::string &poly,
int verbose_level);
648 int *factors,
int len);
673 void print(std::ostream &ost);
676 int *Select,
int verbose_level);
678 int *Select,
int verbose_level);
704 std::string variable_name;
717 {
int *rep = (
int *) p;
return rep[i + 1]; };
723 const char *file,
int line,
int verbose_level);
726 const char *file,
int line,
730 const char *file,
int line,
759 int factor_polynomial_degree,
760 int *factor_polynomial_coefficients_negated,
782 int *Frobenius,
int verbose_level);
784 int *A,
int *Frobenius,
793 int *Mtx_in,
int *Mtx_out,
int k,
int verbose_level);
796 int scalar,
int verbose_level);
815 int p,
int d,
int b,
int a);
821 int f,
int verbose_level);
823 int f,
int verbose_level);
828 int alpha,
int p,
int verbose_level);
834 int p,
int verbose_level);
857 std::ostream &ost,
int verbose_level);
859 long int &rk_q,
long int &rk_r, std::ostream &ost,
int verbose_level);
861 std::string &input_fname,
long int rk_b,
int k,
862 long int *&rk_q,
long int *&rk_r,
int &n,
int &N, std::ostream &ost,
int verbose_level);
864 long int &rk_q,
long int &rk_r, std::ostream &ost,
int verbose_level);
867 int f_report, std::ostream &ost,
int verbose_level);
projective space PG(n,q) of dimension n over Fq
int Gauss_int(int *A, int f_special, int f_complete, int *base_cols, int f_P, int *P, int m, int n, int Pn, int verbose_level)
int PHG_element_normalize(int *v, int stride, int len)
field_theory::finite_field * get_Fp()
int PHG_element_rank(int *v, int stride, int len)
void init(int q, int verbose_level)
void PHG_element_unrank(int *v, int stride, int len, int rk)
int nb_PHG_elements(int n)
int PHG_element_normalize_from_front(int *v, int stride, int len)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
void rearrange_monomials_by_partition_type(int verbose_level)
homogeneous_polynomial_domain()
void multiply_mod_negatively_wrapped(int *coeff1, int *coeff2, int *coeff3, int verbose_level)
void init(field_theory::finite_field *F, int nb_vars, int degree, int f_init_incidence_structure, monomial_ordering_type Monomial_ordering_type, int verbose_level)
void substitute_line(int *coeff_in, int *coeff_out, int *Pt1_coeff, int *Pt2_coeff, int verbose_level)
void print_equation_with_line_breaks_tex_lint(std::ostream &ost, long int *coeffs, int nb_terms_per_line, const char *new_line_text)
void polynomial_function(int *coeff, int *f, int verbose_level)
void print_equation_numerical(std::ostream &ost, int *coeffs)
void unrank_point(int *v, int rk)
int compare_monomials_PART(int *M1, int *M2)
int evaluate_at_a_point_by_rank(int *coeff, int pt)
int evaluate_at_a_point(int *coeff, int *pt_vec)
int get_monomial(int i, int j)
int test_weierstrass_form(int rk, int &a1, int &a2, int &a3, int &a4, int &a6, int verbose_level)
void print_monomial_ordering(std::ostream &ost)
void affine_evaluation_kernel(int *&Kernel, int &dim_kernel, int verbose_level)
void enumerate_points(int *coeff, std::vector< long int > &Pts, int verbose_level)
void print_equation_lint(std::ostream &ost, long int *coeffs)
void multiply_by_scalar(int *coeff_in, int scalar, int *coeff_out, int verbose_level)
int * read_from_string_coefficient_pairs(std::string &str, int verbose_level)
void print_equation(std::ostream &ost, int *coeffs)
void print_monomial(std::ostream &ost, int i)
void remake_symbols(int symbol_offset, const char *symbol_mask, const char *symbol_mask_latex, int verbose_level)
void enumerate_points_lint(int *coeff, long int *&Pts, int &nb_pts, int verbose_level)
void print_monomial(std::ostream &ost, int *mon)
void unrank_coeff_vector(int *v, long int rk)
char * get_monomial_symbol_easy(int i)
void print_monomial_latex_str(std::stringstream &ost, int i)
void print_equation_simple(std::ostream &ost, int *coeffs)
int * get_monomial_pointer(int i)
int * read_from_string_coefficient_vector(std::string &str, int verbose_level)
void enumerate_points_zariski_open_set(int *coeff, std::vector< long int > &Pts, int verbose_level)
void print_equation_with_line_breaks_tex(std::ostream &ost, int *coeffs, int nb_terms_per_line, const char *new_line_text)
void print_monomial_latex(std::ostream &ost, int *mon)
void print_equation_lint_tex(std::ostream &ost, long int *coeffs)
void substitute_semilinear(int *coeff_in, int *coeff_out, int f_semilinear, int frob_power, int *Mtx_inv, int verbose_level)
void multiply_mod(int *coeff1, int *coeff2, int *coeff3, int verbose_level)
void remake_symbols_interval(int symbol_offset, int from, int len, const char *symbol_mask, const char *symbol_mask_latex, int verbose_level)
void algebraic_set(int *Eqns, int nb_eqns, long int *Pts, int &nb_pts, int verbose_level)
int index_of_monomial(int *v)
void print_equation_tex(std::ostream &ost, int *coeffs)
geometry::projective_space * get_P()
void print_monomial_str(std::stringstream &ost, int i)
void substitute_linear(int *coeff_in, int *coeff_out, int *Mtx_inv, int verbose_level)
long int rank_coeff_vector(int *v)
int evaluate_monomial(int idx_of_monomial, int *coords)
field_theory::finite_field * get_F()
void vanishing_ideal(long int *Pts, int nb_pts, int &r, int *Kernel, int verbose_level)
void make_monomials(monomial_ordering_type Monomial_ordering_type, int verbose_level)
~homogeneous_polynomial_domain()
int compare_monomials(int *M1, int *M2)
void print_equation_str(std::stringstream &ost, int *coeffs)
domain to compute with objects of type longinteger
void extended_gcd(longinteger_object &a, longinteger_object &b, longinteger_object &g, longinteger_object &u, longinteger_object &v, int verbose_level)
int jacobi(longinteger_object &a, longinteger_object &m, int verbose_level)
int compare(longinteger_object &a, longinteger_object &b)
void integral_division_exact(longinteger_object &a, longinteger_object &b, longinteger_object &a_over_b)
void base_b_representation(longinteger_object &a, int b, int *&rep, int &len)
int quotient_as_int(longinteger_object &a, longinteger_object &b)
int square_root_mod(int a, int p, int verbose_level)
void power_mod(char *aa, char *bb, char *nn, longinteger_object &result, int verbose_level)
void multiply_up(longinteger_object &a, int *x, int len, int verbose_level)
void add_mod(longinteger_object &a, longinteger_object &b, longinteger_object &c, longinteger_object &m, int verbose_level)
int is_odd(longinteger_object &a)
void print_digits(char *rep, int len)
void add_int_in_place(longinteger_object &a, long int b)
long int quotient_as_lint(longinteger_object &a, longinteger_object &b)
int is_less_than(longinteger_object &a, longinteger_object &b)
void subtract_signless(longinteger_object &a, longinteger_object &b, longinteger_object &c)
int multiplicity_of_p(longinteger_object &a, longinteger_object &residue, int p)
void power_longint_mod(longinteger_object &a, longinteger_object &n, longinteger_object &m, int verbose_level)
void add(longinteger_object &a, longinteger_object &b, longinteger_object &c)
void integral_division_by_int(longinteger_object &a, int b, longinteger_object &q, int &r)
void mult(longinteger_object &a, longinteger_object &b, longinteger_object &c)
void group_order_PGL(longinteger_object &result, int n, int q, int f_semilinear)
void create_Fermat(longinteger_object &F, int n)
long int smallest_primedivisor(longinteger_object &a, int p_min, int verbose_level)
void random_number_with_n_decimals(longinteger_object &R, int n, int verbose_level)
int logarithm_base_b(longinteger_object &a, int b)
void integral_division_by_lint(longinteger_object &a, long int b, longinteger_object &q, long int &r)
void matrix_entries_integral_division_exact(longinteger_object *A, longinteger_object &b, int Am, int An)
void mult_in_place(longinteger_object &a, longinteger_object &b)
void square_root(longinteger_object &a, longinteger_object &sqrt_a, int verbose_level)
void mult_mod(longinteger_object &a, longinteger_object &b, longinteger_object &c, longinteger_object &m, int verbose_level)
void random_number_less_than_n(longinteger_object &n, longinteger_object &r)
void create_qnm1(longinteger_object &a, int q, int n)
int is_even(longinteger_object &a)
void create_q_to_the_n(longinteger_object &a, int q, int n)
void square_root_floor(longinteger_object &a, longinteger_object &x, int verbose_level)
void matrix_product(longinteger_object *A, longinteger_object *B, longinteger_object *&C, int Am, int An, int Bn)
void integral_division(longinteger_object &a, longinteger_object &b, longinteger_object &q, longinteger_object &r, int verbose_level)
void subtract_in_place(longinteger_object &a, longinteger_object &b)
void factor(longinteger_object &a, int &nb_primes, int *&primes, int *&exponents, int verbose_level)
void create_Mersenne(longinteger_object &M, int n)
void multiply_up_lint(longinteger_object &a, long int *x, int len, int verbose_level)
void power_int(longinteger_object &a, int n)
int remainder_mod_int(longinteger_object &a, int p)
void add_in_place(longinteger_object &a, longinteger_object &b)
void factor_into_longintegers(longinteger_object &a, int &nb_primes, longinteger_object *&primes, int *&exponents, int verbose_level)
void matrix_print_tex(std::ostream &ost, longinteger_object *A, int Am, int An)
void power_int_mod(longinteger_object &a, int n, longinteger_object &m)
void Dedekind_number(longinteger_object &Dnq, int n, int q, int verbose_level)
void mult_integer_in_place(longinteger_object &a, int b)
void subtract_signless_in_place(longinteger_object &a, longinteger_object &b)
void matrix_print_GAP(std::ostream &ost, longinteger_object *A, int Am, int An)
int compare_unsigned(longinteger_object &a, longinteger_object &b)
void factorial(longinteger_object &result, int n)
a class to represent arbitrary precision integers
int is_one_or_minus_one()
void create_from_base_b_representation(int b, int *rep, int len)
void create_from_base_10_string(const char *str, int verbose_level)
void print_to_string(char *str)
int compare_with_int(int a)
void assign_to(longinteger_object &b)
void create_product(int nb_factors, int *factors)
std::ostream & print(std::ostream &ost)
void print_width(std::ostream &ost, int width)
std::ostream & print_not_scientific(std::ostream &ost)
void create_i_power_j(int i, int j)
void create_power(int a, int e)
void create(long int i, const char *file, int line)
void swap_with(longinteger_object &b)
void create_power_minus_one(int a, int e)
void as_longinteger(longinteger_object &a)
partial derivative connects two homogeneous polynomial domains
homogeneous_polynomial_domain * H
void apply(int *eqn_in, int *eqn_out, int verbose_level)
homogeneous_polynomial_domain * Hd
void init(homogeneous_polynomial_domain *H, homogeneous_polynomial_domain *Hd, int variable_idx, int verbose_level)
domain for polynomials with double coefficients
void mult(polynomial_double *A, polynomial_double *B, polynomial_double *C)
double divide_linear_factor(polynomial_double *p, polynomial_double *q, double lambda, int verbose_level)
void add(polynomial_double *A, polynomial_double *B, polynomial_double *C)
void determinant_over_polynomial_ring(polynomial_double *P, polynomial_double *det, int n, int verbose_level)
void mult_by_scalar_in_place(polynomial_double *A, double lambda)
void find_all_roots(polynomial_double *p, double *lambda, int verbose_level)
ring_theory::polynomial_double * create_object()
polynomial_double_domain()
void init(int alloc_length)
void copy(polynomial_double *A, polynomial_double *B)
~polynomial_double_domain()
polynomials with double coefficients, related to class polynomial_double_domain
void init(int alloc_length)
double root_finder(int verbose_level)
void print(std::ostream &ost)
double evaluate_at(double t)
global functions related to ring theory
void polynomial_division_with_report(field_theory::finite_field *F, long int rk0, long int rk1, int verbose_level)
void create_projective_variety(field_theory::finite_field *F, std::string &variety_label, std::string &variety_label_tex, int variety_nb_vars, int variety_degree, std::string &variety_coeffs, monomial_ordering_type Monomial_ordering_type, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void polynomial_division_from_file_all_k_error_patterns_with_report(field_theory::finite_field *F, std::string &input_file, long int rk1, int k, int verbose_level)
void write_code_for_division(field_theory::finite_field *F, std::string &fname_code, std::string &A_coeffs, std::string &B_coeffs, int verbose_level)
void make_all_irreducible_polynomials_of_degree_d(field_theory::finite_field *F, int d, std::vector< std::vector< int > > &Table, int verbose_level)
void polynomial_division(field_theory::finite_field *F, std::string &A_coeffs, std::string &B_coeffs, int verbose_level)
char * search_for_primitive_polynomial_of_given_degree(int p, int degree, int verbose_level)
void sift_polynomials(field_theory::finite_field *F, long int rk0, long int rk1, int verbose_level)
void do_make_table_of_irreducible_polynomials(field_theory::finite_field *F, int deg, int verbose_level)
void oval_polynomial(field_theory::finite_field *F, int *S, unipoly_domain &D, unipoly_object &poly, int verbose_level)
int count_all_irreducible_polynomials_of_degree_d(field_theory::finite_field *F, int d, int verbose_level)
void create_intersection_of_zariski_open_sets(field_theory::finite_field *F, std::string &variety_label_txt, std::string &variety_label_tex, int variety_nb_vars, int variety_degree, std::vector< std::string > &Variety_coeffs, monomial_ordering_type Monomial_ordering_type, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void print_longinteger_after_multiplying(std::ostream &ost, int *factors, int len)
void polynomial_division_from_file_with_report(field_theory::finite_field *F, std::string &input_file, long int rk1, int verbose_level)
void extended_gcd_for_polynomials(field_theory::finite_field *F, std::string &A_coeffs, std::string &B_coeffs, int verbose_level)
void mult_polynomials(field_theory::finite_field *F, long int rk0, long int rk1, int verbose_level)
void factor_cyclotomic(int n, int q, int d, int *coeffs, int f_poly, std::string &poly, int verbose_level)
void create_irreducible_polynomial(field_theory::finite_field *F, unipoly_domain *Fq, unipoly_object *&Beta, int n, long int *cyclotomic_set, int cylotomic_set_size, unipoly_object *&generator, int verbose_level)
void search_for_primitive_polynomials(int p_min, int p_max, int n_min, int n_max, int verbose_level)
void compute_nth_roots_as_polynomials(field_theory::finite_field *F, unipoly_domain *FpX, unipoly_domain *Fq, unipoly_object *&Beta, int n1, int n2, int verbose_level)
void polynomial_mult_mod(field_theory::finite_field *F, std::string &A_coeffs, std::string &B_coeffs, std::string &M_coeffs, int verbose_level)
void create_projective_curve(field_theory::finite_field *F, std::string &variety_label_txt, std::string &variety_label_tex, int curve_nb_vars, int curve_degree, std::string &curve_coeffs, monomial_ordering_type Monomial_ordering_type, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void do_search_for_primitive_polynomial_in_range(int p_min, int p_max, int deg_min, int deg_max, int verbose_level)
void compute_powers(field_theory::finite_field *F, unipoly_domain *Fq, int n, int start_idx, unipoly_object *&Beta, int verbose_level)
void number_of_conditions_satisfied(field_theory::finite_field *F, std::string &variety_label_txt, std::string &variety_label_tex, int variety_nb_vars, int variety_degree, std::vector< std::string > &Variety_coeffs, monomial_ordering_type Monomial_ordering_type, std::string &number_of_conditions_satisfied_fname, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void polynomial_find_roots(field_theory::finite_field *F, std::string &A_coeffs, int verbose_level)
a table of all irreducible polynomials over GF(q) of degree less than a certain value
~table_of_irreducible_polynomials()
void factorize_polynomial(unipoly_object &char_poly, int *Mult, int verbose_level)
void print(std::ostream &ost)
table_of_irreducible_polynomials()
void print_polynomials(std::ostream &ost)
field_theory::finite_field * F
int is_irreducible(unipoly_object &poly, int verbose_level)
int select_polynomial_next(int *Select, int verbose_level)
int select_polynomial_first(int *Select, int verbose_level)
void init(int k, field_theory::finite_field *F, int verbose_level)
domain of polynomials in one variable over a finite field
int substitute_scalar_in_polynomial(unipoly_object &p, int scalar, int verbose_level)
void power_coefficients(unipoly_object &a, int n)
void add(unipoly_object a, unipoly_object b, unipoly_object &c)
void delete_object(unipoly_object &p)
int minimum_polynomial_factorring(int alpha, int p, int verbose_level)
void deletion_matrix(unipoly_object *M, int k, int delete_row, int delete_column, unipoly_object *&N, int verbose_level)
void make_monic(unipoly_object &a)
void create_object_of_degree_with_coefficients(unipoly_object &p, int d, int *coeff)
int is_zero(unipoly_object p)
void power_int(unipoly_object &a, int n, int verbose_level)
void get_a_primitive_polynomial(unipoly_object &m, int f, int verbose_level)
void mult_easy_with_report(long int rk_a, long int rk_b, long int &rk_c, std::ostream &ost, int verbose_level)
void substitute_matrix_in_polynomial(unipoly_object &p, int *Mtx_in, int *Mtx_out, int k, int verbose_level)
void print_object_tight(unipoly_object p, std::ostream &ost)
int is_squarefree(unipoly_object p, int verbose_level)
void derivative(unipoly_object a, unipoly_object &b)
field_theory::finite_field * get_F()
void center_lift_coordinates(unipoly_object a, int q)
void print_object_dense(unipoly_object p, std::ostream &ost)
void init_variable_name(std::string &label)
int is_primitive(unipoly_object &m, longinteger_object &qm1, int nb_primes, longinteger_object *primes, int verbose_level)
void Frobenius_matrix_by_rows(int *&Frob, unipoly_object factor_polynomial, int verbose_level)
void m_one(unipoly_object p)
void mult_mod(unipoly_object a, unipoly_object b, unipoly_object &c, unipoly_object m, int verbose_level)
void one(unipoly_object p)
void module_structure_apply(int *v, int *Mtx, int n, unipoly_object p, int verbose_level)
void exact_division(unipoly_object a, unipoly_object b, unipoly_object &q, int verbose_level)
void division_with_remainder_from_file_all_k_bit_error_patterns(std::string &input_fname, long int rk_b, int k, long int *&rk_q, long int *&rk_r, int &n, int &N, std::ostream &ost, int verbose_level)
void mult(unipoly_object a, unipoly_object b, unipoly_object &c, int verbose_level)
void compute_normal_basis(int d, int *Normal_basis, int *Frobenius, int verbose_level)
void mult_mod_negated(unipoly_object a, unipoly_object b, unipoly_object &c, int factor_polynomial_degree, int *factor_polynomial_coefficients_negated, int verbose_level)
void order_ideal_generator(int d, int idx, unipoly_object &mue, int *A, int *Frobenius, int verbose_level)
int & s_i(unipoly_object p, int i)
void reduce_modulo_p(unipoly_object a, int p)
void extended_gcd(unipoly_object m, unipoly_object n, unipoly_object &u, unipoly_object &v, unipoly_object &g, int verbose_level)
void minimum_polynomial_extension_field(unipoly_object &g, unipoly_object m, unipoly_object &minpol, int d, int *Frobenius, int verbose_level)
void print_matrix(unipoly_object *M, int k)
void get_an_irreducible_polynomial(unipoly_object &m, int f, int verbose_level)
void create_object_of_degree(unipoly_object &p, int d)
void division_with_remainder_from_file_with_report(std::string &input_fname, long int rk_b, long int &rk_q, long int &rk_r, std::ostream &ost, int verbose_level)
void division_with_remainder_with_report(unipoly_object &a, unipoly_object &b, unipoly_object &q, unipoly_object &r, int f_report, std::ostream &ost, int verbose_level)
void print_vector_of_polynomials(unipoly_object *sigma, int deg)
void greatest_common_divisor(unipoly_object m, unipoly_object n, unipoly_object &g, int verbose_level)
void division_with_remainder(unipoly_object a, unipoly_object b, unipoly_object &q, unipoly_object &r, int verbose_level)
int is_irreducible(unipoly_object a, int verbose_level)
void determinant(unipoly_object *M, int k, unipoly_object &p, int verbose_level)
int degree(unipoly_object p)
int compare_euclidean(unipoly_object m, unipoly_object n)
void singer_candidate(unipoly_object &m, int p, int d, int b, int a)
void power_longinteger(unipoly_object &a, longinteger_object &n, int verbose_level)
void Frobenius_matrix(int *&Frob, unipoly_object factor_polynomial, int verbose_level)
void create_object_by_rank_longinteger(unipoly_object &p, longinteger_object &rank, const char *file, int line, int verbose_level)
int rank(unipoly_object p)
int is_one(unipoly_object p)
void create_object_by_rank(unipoly_object &p, long int rk, const char *file, int line, int verbose_level)
void create_Dickson_polynomial(unipoly_object &p, int *map)
void division_with_remainder_numerically_with_report(long int rk_a, long int rk_b, long int &rk_q, long int &rk_r, std::ostream &ost, int verbose_level)
void zero(unipoly_object p)
void unrank_longinteger(unipoly_object p, longinteger_object &rank)
void create_object_by_rank_string(unipoly_object &p, std::string &rk, int verbose_level)
void matrix_apply(unipoly_object &p, int *Mtx, int n, int verbose_level)
void negate(unipoly_object a)
void rank_longinteger(unipoly_object p, longinteger_object &rank)
void characteristic_polynomial(int *Mtx, int k, unipoly_object &char_poly, int verbose_level)
void minimum_polynomial_factorring_longinteger(longinteger_object &alpha, longinteger_object &rk_minpoly, int p, int verbose_level)
void init_basic(field_theory::finite_field *F, int verbose_level)
void create_object_of_degree_no_test(unipoly_object &p, int d)
void print_coeffs_top_down_assuming_one_character_per_digit(unipoly_object a, std::ostream &ost)
void mult_easy(unipoly_object a, unipoly_object b, unipoly_object &c)
void print_object_sparse(unipoly_object p, std::ostream &ost)
void create_object_from_csv_file(unipoly_object &p, std::string &fname, const char *file, int line, int verbose_level)
void print_coeffs_top_down_assuming_one_character_per_digit_with_degree_given(unipoly_object a, int m, std::ostream &ost)
void assign(unipoly_object a, unipoly_object &b, int verbose_level)
void minimum_polynomial(unipoly_object &a, int alpha, int p, int verbose_level)
void Berlekamp_matrix(int *&B, unipoly_object factor_polynomial, int verbose_level)
void unrank(unipoly_object p, int rk)
void take_away_all_factors_from_b(unipoly_object a, unipoly_object b, unipoly_object &a_without_b, int verbose_level)
void print_object(unipoly_object p, std::ostream &ost)
void init_factorring(field_theory::finite_field *F, unipoly_object m, int verbose_level)
ostream & operator<<(ostream &ost, longinteger_object &p)
the orbiter library for the classification of combinatorial objects