16namespace layer1_foundations {
17namespace combinatorics {
55 for (degree = 1; degree <=
n; degree++) {
102 int f_v = (verbose_level >= 1);
108 cout <<
"boolean_function_domain::init" << endl;
112 cout <<
"do_it n=" <<
n << endl;
116 cout <<
"n must be even" << endl;
131 cout <<
"boolean_function_domain::init n=" <<
n << endl;
132 cout <<
"boolean_function_domain::init n2=" <<
n2 << endl;
133 cout <<
"boolean_function_domain::init Q=" <<
Q << endl;
134 cout <<
"boolean_function_domain::init bent=" <<
bent << endl;
135 cout <<
"boolean_function_domain::init near_bent=" <<
near_bent << endl;
136 cout <<
"boolean_function_domain::init NN=" << *
NN << endl;
137 cout <<
"boolean_function_domain::init N=" <<
N << endl;
162 for (i = 0; i <
Q; i++) {
169 cout <<
"affine_points" << endl;
170 for (i = 0; i <
Q; i++) {
181 cout <<
"boolean_function_domain::init before Gg.Walsh_matrix" << endl;
187 cout <<
"Walsh matrix is too big" << endl;
190 cout <<
"boolean_function_domain::init after Gg.Walsh_matrix" << endl;
195 cout <<
"boolean_function_domain::init before setup_polynomial_rings" << endl;
199 cout <<
"boolean_function_domain::init after setup_polynomial_rings" << endl;
205 cout <<
"boolean_function_domain::init done" << endl;
211 int f_v = (verbose_level >= 1);
216 cout <<
"boolean_function_domain::setup_polynomial_rings" << endl;
227 for (degree = 1; degree <=
n; degree++) {
229 cout <<
"boolean_function_domain::setup_polynomial_rings "
230 "setting up polynomial ring of degree " << degree << endl;
241 cout <<
"boolean_function_domain::setup_polynomial_rings "
242 "before Poly[n].affine_evaluation_kernel" << endl;
247 cout <<
"boolean_function_domain::setup_polynomial_rings "
248 "after Poly[n].affine_evaluation_kernel" << endl;
252 cout <<
"Kernel of evaluation map:" << endl;
257 cout <<
"boolean_function_domain::setup_polynomial_rings done" << endl;
262 int *func,
int *coeff,
int verbose_level)
264 int f_v = (verbose_level >= 1);
265 int f_vv = (verbose_level >= 2);
267 int s, i, u,
v, a, b, c, h, idx;
274 cout <<
"boolean_function_domain::compute_polynomial_representation" << endl;
278 cout <<
"func=" << endl;
279 for (s = 0; s <
N; s++) {
280 cout << s <<
" : " << func[s] << endl;
288 cout <<
"boolean_function_domain::compute_polynomial_representation "
289 "looping over all values, N=" <<
N << endl;
291 for (s = 0; s <
N; s++) {
297 cout <<
"boolean_function_domain::compute_polynomial_representation "
298 "s=" << s <<
" / " <<
N << endl;
306 cout <<
"the function value at s=" << s <<
" is " << func[s] << endl;
307 cout <<
"func=" << endl;
308 for (h = 0; h <
N; h++) {
309 cout << h <<
" : " << func[h] << endl;
322 for (i = 0; i <
n; i++) {
326 cout <<
"s=" << s <<
" i=" << i << endl;
337 cout <<
"created the polynomial ";
361 for (h = 0; h <=
n + 1; h++) {
372 cout <<
"s=" << s <<
" / " <<
N <<
" : ";
381 cout <<
"boolean_function_domain::compute_polynomial_representation "
382 "looping over all values done" << endl;
386 cout <<
"preliminary result : ";
396 for (h = 0; h <
Q; h++) {
397 cout << h <<
" : " << func[h] <<
" : " <<
f[h];
399 if (func[h] ==
f[h]) {
407 cout <<
"an error has occurred" << endl;
416 coeff[idx] =
Fq->
add(coeff[idx], 1);
430 for (h = 0; h <
Q; h++) {
431 cout << h <<
" : " << func[h] <<
" : " <<
f[h];
432 if (func[h] !=
f[h]) {
439 cout <<
"an error has occurred" << endl;
451 cout <<
"boolean_function_domain::compute_polynomial_representation done" << endl;
459 for (i = 0; i <
N; i++) {
470 for (i = 0; i <
Q; i++) {
482 for (i = 0; i <
Q; i++) {
497 for (i = 0; i <
Q; i++) {
498 for (j = 0; j <
Q; j++) {
499 out[i] +=
W[i *
Q + j] * in[j];
508 for (i = 0; i <
Q; i++) {
526 for (i = 0; i <
Q; i++) {
global functions related to finite fields, irreducible polynomials and such
void Walsh_matrix(field_theory::finite_field *F, int n, int *&W, int verbose_level)
void setup_polynomial_rings(int verbose_level)
field_theory::finite_field * Fq
void raise(int *in, int *out)
void evaluate(int *coeff, int *f)
void evaluate_projectively(int *coeff, int *f)
void init(int n, int verbose_level)
void apply_Walsh_transform(int *in, int *out)
~boolean_function_domain()
ring_theory::longinteger_object * NN
boolean_function_domain()
ring_theory::homogeneous_polynomial_domain * Poly
void compute_polynomial_representation(int *func, int *coeff, int verbose_level)
void finite_field_init(int q, int f_without_tables, int verbose_level)
void PG_element_rank_modified_lint(int *v, int stride, int len, long int &a)
various functions related to geometries
void AG_element_unrank(int q, int *v, int stride, int len, long int a)
long int nb_PG_elements(int n, int q)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
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)
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)
void affine_evaluation_kernel(int *&Kernel, int &dim_kernel, int verbose_level)
void print_equation(std::ostream &ost, int *coeffs)
int index_of_monomial(int *v)
domain to compute with objects of type longinteger
void power_int(longinteger_object &a, int n)
a class to represent arbitrary precision integers
void create(long int i, const char *file, int line)
#define Int_vec_zero(A, B)
#define Int_matrix_print(A, B, C)
#define NEW_OBJECTS(type, n)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects