20namespace layer1_foundations {
21namespace field_theory {
32 factor_polynomial_degree = 0;
33 factor_polynomial_coefficients_negated = NULL;
49 if (factor_polynomial_coefficients_negated) {
50 FREE_int(factor_polynomial_coefficients_negated);
56 int f_v = (verbose_level >= 1);
59 cout <<
"finite_field_implementation_wo_tables::init" << endl;
62 finite_field_implementation_wo_tables::F = F;
73 cout <<
"finite_field_implementation_wo_tables::init before GFp->finite_field_init" << endl;
77 cout <<
"finite_field_implementation_wo_tables::init after GFp->finite_field_init" << endl;
85 cout <<
"finite_field_implementation_wo_tables::init before FX->create_object_by_rank_string" << endl;
89 cout <<
"finite_field_implementation_wo_tables::init m=";
97 cout <<
"finite_field_implementation_wo_tables::init before Fq->init_factorring" << endl;
101 cout <<
"finite_field_implementation_wo_tables::init after Fq->init_factorring" << endl;
106 factor_polynomial_degree = Fq->
degree(m);
107 factor_polynomial_coefficients_negated =
NEW_int(factor_polynomial_degree + 1);
108 for (i = 0; i <= factor_polynomial_degree; i++) {
109 factor_polynomial_coefficients_negated[i] = F->
negate(Fq->
s_i(m, i));
114 cout <<
"finite_field_implementation_wo_tables::init before Fq->create_object_by_rank" << endl;
118 cout <<
"finite_field_implementation_wo_tables::init after Fq->create_object_by_rank" << endl;
123 cout <<
"finite_field_implementation_wo_tables::init done" << endl;
129 int f_v = (verbose_level >= 1);
132 cout <<
"finite_field_implementation_wo_tables::mult" << endl;
143 cout <<
"a=" << endl;
146 cout <<
"b=" << endl;
149 cout <<
"finite_field_implementation_wo_tables::mult before Fq->mult_mod_negated" << endl;
153 factor_polynomial_degree,
154 factor_polynomial_coefficients_negated,
158 cout <<
"finite_field_implementation_wo_tables::mult after Fq->mult_mod_negated" << endl;
163 cout <<
"c=" << endl;
166 cout <<
"i=" << i <<
", j=" << j <<
" k=" << k << endl;
173 cout <<
"finite_field_implementation_wo_tables::mult done" << endl;
180 int f_v = (verbose_level >= 1);
183 cout <<
"finite_field_implementation_wo_tables::inverse" << endl;
195 cout <<
"a=" << endl;
198 cout <<
"finite_field_implementation_wo_tables::inverse before Fq->extended_gcd" << endl;
204 cout <<
"finite_field_implementation_wo_tables::inverse after Fq->extended_gcd" << endl;
209 cout <<
"v=" << endl;
212 cout <<
"i=" << i <<
", k=" << k << endl;
220 cout <<
"finite_field_implementation_wo_tables::inverse done" << endl;
227 int f_v = (verbose_level >= 1);
230 cout <<
"finite_field_implementation_wo_tables::negate" << endl;
235 if (i < 0 || i >= F->
q) {
236 cout <<
"finite_field_implementation_wo_tables::negate out of range, i = " << i << endl;
242 for (l = 0; l < F->
e; l++) {
243 v2[l] = (F->
p - v1[l]) % F->
p;
248 cout <<
"finite_field_implementation_wo_tables::negate done" << endl;
255 int f_v = (verbose_level >= 1);
258 cout <<
"finite_field_implementation_wo_tables::add" << endl;
263 if (i < 0 || i >= F->
q) {
264 cout <<
"finite_field_implementation_wo_tables::add out of range, i = " << i << endl;
267 if (j < 0 || j >= F->
q) {
268 cout <<
"finite_field_implementation_wo_tables::add out of range, j = " << j << endl;
275 for (l = 0; l < F->
e; l++) {
276 v3[l] = (v1[l] + v2[l]) % F->
p;
281 cout <<
"finite_field_implementation_wo_tables::add done" << endl;
~finite_field_implementation_wo_tables()
int inverse(int i, int verbose_level)
void init(finite_field *F, int verbose_level)
int negate(int i, int verbose_level)
int add(int i, int j, int verbose_level)
int mult(int i, int j, int verbose_level)
finite_field_implementation_wo_tables()
void finite_field_init(int q, int f_without_tables, int verbose_level)
various functions related to geometries
void AG_element_unrank(int q, int *v, int stride, int len, long int a)
long int AG_element_rank(int q, int *v, int stride, int len)
domain of polynomials in one variable over a finite field
void delete_object(unipoly_object &p)
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)
int & s_i(unipoly_object p, int i)
void extended_gcd(unipoly_object m, unipoly_object n, unipoly_object &u, unipoly_object &v, unipoly_object &g, int verbose_level)
int degree(unipoly_object p)
int rank(unipoly_object p)
void create_object_by_rank(unipoly_object &p, long int rk, const char *file, int line, int verbose_level)
void create_object_by_rank_string(unipoly_object &p, std::string &rk, int verbose_level)
void create_object_of_degree_no_test(unipoly_object &p, int d)
void print_object(unipoly_object p, std::ostream &ost)
void init_factorring(field_theory::finite_field *F, unipoly_object m, int verbose_level)
the orbiter library for the classification of combinatorial objects