19namespace layer1_foundations {
36 int f_v = (verbose_level >= 1);
39 cout <<
"arc_basic::init" << endl;
45 cout <<
"arc_basic::init done" << endl;
50 long int *&Pts,
int &nb_pts,
int verbose_level)
52 int f_v = (verbose_level >= 1);
58 cout <<
"arc_basic::Segre_hyperoval q=" <<
F->
q << endl;
61 cout <<
"arc_basic::Segre_hyperoval needs e odd" << endl;
70 for (t = 0; t <
F->
q; t++) {
84 for (i = 0; i < N; i++) {
91 cout <<
"arc_basic::Segre_hyperoval "
92 "q=" <<
F->
q <<
" done" << endl;
98 long int *&Pts,
int &nb_pts,
int verbose_level)
100 int f_v = (verbose_level >= 1);
103 int sigma, gamma = 0, Sigma, exponent;
108 cout <<
"arc_basic::GlynnI_hyperoval q=" <<
F->
q << endl;
111 cout <<
"arc_basic::GlynnI_hyperoval needs e odd" << endl;
116 for (i = 0; i <
F->
e; i++) {
117 if (((i * i) %
F->
e) == sigma) {
123 cout <<
"arc_basic::GlynnI_hyperoval "
124 "did not find gamma" << endl;
128 cout <<
"arc_basic::GlynnI_hyperoval sigma = " << sigma
129 <<
" gamma = " << gamma << endl;
133 exponent = 3 * Sigma + 4;
140 for (t = 0; t <
F->
q; t++) {
141 te =
F->
power(t, exponent);
154 for (i = 0; i < N; i++) {
161 cout <<
"arc_basic::GlynnI_hyperoval "
162 "q=" <<
F->
q <<
" done" << endl;
167 long int *&Pts,
int &nb_pts,
int verbose_level)
169 int f_v = (verbose_level >= 1);
172 int sigma, gamma = 0, Sigma, Gamma, exponent;
177 cout <<
"arc_basic::GlynnII_hyperoval q=" <<
F->
q << endl;
180 cout <<
"arc_basic::GlynnII_hyperoval "
181 "needs e odd" << endl;
186 for (i = 0; i <
F->
e; i++) {
187 if (((i * i) %
F->
e) == sigma) {
193 cout <<
"arc_basic::GlynnII_hyperoval "
194 "did not find gamma" << endl;
198 cout <<
"arc_basic::GlynnII_hyperoval "
199 "sigma = " << sigma <<
" gamma = " << i << endl;
203 exponent = Sigma + Gamma;
210 for (t = 0; t <
F->
q; t++) {
211 te =
F->
power(t, exponent);
224 for (i = 0; i < N; i++) {
231 cout <<
"arc_basic::GlynnII_hyperoval "
232 "q=" <<
F->
q <<
" done" << endl;
238 long int *&Pts,
int &nb_pts,
int f_short,
int verbose_level)
244 int f_v = (verbose_level >= 1);
246 int i, t, a, b, h, k, top, bottom;
248 int t2, t3, t4, sqrt_t;
252 cout <<
"arc_basic::Subiaco_oval "
253 "q=" <<
F->
q <<
" f_short=" << f_short << endl;
258 if (k * 3 !=
F->
q - 1) {
259 cout <<
"arc_basic::Subiaco_oval k * 3 != q - 1" << endl;
263 omega2 =
F->
mult(omega, omega);
264 if (
F->
add3(omega2, omega, 1) != 0) {
265 cout <<
"arc_basic::Subiaco_oval "
266 "add3(omega2, omega, 1) != 0" << endl;
272 for (t = 0; t <
F->
q; t++) {
275 t4 =
F->
mult(t2, t2);
277 if (
F->
mult(sqrt_t, sqrt_t) != t) {
278 cout <<
"arc_basic::Subiaco_oval "
279 "mult(sqrt_t, sqrt_t) != t" << endl;
290 cout <<
"t=" << t <<
" top=" << top
291 <<
" bottom=" << bottom << endl;
298 b =
F->
mult(omega, sqrt_t);
309 for (i = 0; i < N; i++) {
316 cout <<
"arc_basic::Subiaco_oval "
317 "q=" <<
F->
q <<
" done" << endl;
325 long int *&Pts,
int &nb_pts,
int verbose_level)
340 int f_v = (verbose_level >= 1);
342 int i, t, d, dv, d2, one_d_d2, a, h;
343 int t2, t3, t4, sqrt_t;
344 int top1, top2, top3, top4, top, bottom;
348 cout <<
"arc_basic::Subiaco_hyperoval q=" <<
F->
q << endl;
352 for (d = 1; d <
F->
q; d++) {
359 cout <<
"arc_basic::Subiaco_hyperoval "
360 "cannot find element d" << endl;
364 one_d_d2 =
F->
add3(1, d, d2);
369 for (t = 0; t <
F->
q; t++) {
372 t4 =
F->
mult(t2, t2);
374 if (
F->
mult(sqrt_t, sqrt_t) != t) {
375 cout <<
"arc_basic::Subiaco_hyperoval "
376 "mult(sqrt_t, sqrt_t) != t" << endl;
386 top1 =
F->
mult(d2,t4);
387 top2 =
F->
mult3(d2, one_d_d2, t3);
388 top3 =
F->
mult3(d2, one_d_d2, t2);
389 top4 =
F->
mult(d2, t);
390 top =
F->
add4(top1, top2, top3, top4);
393 cout <<
"t=" << t <<
" top=" << top
394 <<
" bottom=" << bottom << endl;
397 h =
F->
add(a, sqrt_t);
410 for (i = 0; i < N; i++) {
417 cout <<
"arc_basic::Subiaco_hyperoval "
418 "q=" <<
F->
q <<
" done" << endl;
444 int a, b, c, d, e, beta6, beta11, beta20;
449 a =
F->
add3(t_powers[4], t_powers[16], t_powers[28]);
450 b =
F->
add6(t_powers[6], t_powers[10], t_powers[14],
451 t_powers[18], t_powers[22], t_powers[26]);
452 c =
F->
add(t_powers[8], t_powers[20]);
453 d =
F->
add(t_powers[12], t_powers[24]);
459 b =
F->
mult(b, beta11);
460 c =
F->
mult(c, beta20);
461 d =
F->
mult(d, beta6);
463 e =
F->
add4(a, b, c, d);
476 int a, b, c, d, beta21, beta42;
481 a =
F->
add6(t_powers[8], t_powers[12], t_powers[20],
482 t_powers[22], t_powers[42], t_powers[52]);
483 b =
F->
add6(t_powers[4], t_powers[10], t_powers[14],
484 t_powers[16], t_powers[30], t_powers[38]);
485 c =
F->
add6(t_powers[44], t_powers[48], t_powers[54],
486 t_powers[56], t_powers[58], t_powers[60]);
487 b =
F->
add3(b, c, t_powers[62]);
488 c =
F->
add7(t_powers[2], t_powers[6], t_powers[26],
489 t_powers[28], t_powers[32], t_powers[36], t_powers[40]);
491 beta42 =
F->
mult(beta21, beta21);
502 int a, b, c, d, beta21, beta42;
507 a =
F->
add3(t_powers[24], t_powers[30], t_powers[62]);
508 b =
F->
add6(t_powers[4], t_powers[8], t_powers[10],
509 t_powers[14], t_powers[16], t_powers[34]);
510 c =
F->
add6(t_powers[38], t_powers[40], t_powers[44],
511 t_powers[46], t_powers[52], t_powers[54]);
512 b =
F->
add4(b, c, t_powers[58], t_powers[60]);
513 c =
F->
add5(t_powers[6], t_powers[12], t_powers[18],
514 t_powers[20], t_powers[26]);
515 d =
F->
add5(t_powers[32], t_powers[36], t_powers[42],
516 t_powers[48], t_powers[50]);
519 beta42 =
F->
mult(beta21, beta21);
529 int a, b, c, d, beta21, beta42;
534 a =
F->
add7(t_powers[4], t_powers[8], t_powers[14], t_powers[34],
535 t_powers[42], t_powers[48], t_powers[62]);
536 b =
F->
add8(t_powers[6], t_powers[16], t_powers[26], t_powers[28],
537 t_powers[30], t_powers[32], t_powers[40], t_powers[58]);
538 c =
F->
add8(t_powers[10], t_powers[18], t_powers[24], t_powers[36],
539 t_powers[44], t_powers[50], t_powers[52], t_powers[60]);
541 beta42 =
F->
mult(beta21, beta21);
551 int f_v = (verbose_level >= 1);
561 cout <<
"arc_basic::LunelliSce" << endl;
578 cout <<
"arc_basic::LunelliSce "
579 "field order must be 16" << endl;
584 for (i = 0; i < N; i++) {
594 if ((a == 0 && b) || (b == 0 && a)) {
599 cout <<
"sz != 18" << endl;
603 cout <<
"the size of the LinelliSce hyperoval is " << sz << endl;
604 cout <<
"the LinelliSce hyperoval is:" << endl;
610 cout <<
"the size of cubic1 is " << cubic1_size << endl;
611 cout <<
"the cubic1 is:" << endl;
612 int_vec_print(cout, cubic1, cubic1_size);
614 cout <<
"the size of cubic2 is " << cubic2_size << endl;
615 cout <<
"the cubic2 is:" << endl;
616 int_vec_print(cout, cubic2, cubic2_size);
625 int a, b, c, d, e, eta3;
633 e =
F->
add4(a, b, c, d);
640 int a, b, c, d, e, eta12;
647 d =
F->
product4(eta12, v[0], v[1], v[2]);
648 e =
F->
add4(a, b, c, d);
int add5(int i1, int i2, int i3, int i4, int i5)
int add8(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
int add4(int i1, int i2, int i3, int i4)
void PG_element_rank_modified(int *v, int stride, int len, int &a)
void PG_element_unrank_modified(int *v, int stride, int len, int a)
int mult3(int a1, int a2, int a3)
int product4(int a1, int a2, int a3, int a4)
int frobenius_power(int a, int frob_power)
int add3(int i1, int i2, int i3)
int add7(int i1, int i2, int i3, int i4, int i5, int i6, int i7)
int absolute_trace(int i)
int add6(int i1, int i2, int i3, int i4, int i5, int i6)
void power_table(int t, int *power_table, int len)
field_theory::finite_field * F
void GlynnI_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
int LunelliSce_evaluate_cubic1(int *v)
void LunelliSce(int *pts18, int verbose_level)
int LunelliSce_evaluate_cubic2(int *v)
int OKeefe_Penttila_32(int t)
void GlynnII_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
void Subiaco_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
void init(field_theory::finite_field *F, int verbose_level)
void Segre_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
void Subiaco_oval(long int *&Pts, int &nb_pts, int f_short, int verbose_level)
various functions related to geometries
long int nb_PG_elements(int n, int q)
basic number theoretic functions
int i_power_j(int i, int j)
#define Int_vec_zero(A, B)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects