18namespace layer1_foundations {
19namespace field_theory {
27 for (i = 0; i < n; i++) {
44 cout <<
"finite_field::test_if_vectors_are_projectively_equal:" << endl;
47 cout <<
"finite_field::test_if_vectors_are_projectively_equal:" << endl;
58 cout <<
"finite_field::test_if_vectors_are_projectively_equal:" << endl;
61 cout <<
"finite_field::test_if_vectors_are_projectively_equal:" << endl;
66 for (i = 0; i < len; i++) {
80 int *v,
int stride,
int len)
85 for (i = len - 1; i >= 0; i--) {
93 for (j = i - 1; j >= 0; j--) {
94 v[j * stride] =
mult(v[j * stride], a);
99 cout <<
"finite_field::PG_element_normalize zero vector" << endl;
104 int *v,
int stride,
int len)
109 for (i = 0; i < len; i++) {
117 for (j = i + 1; j < len; j++) {
118 v[j * stride] =
mult(v[j * stride], a);
123 cout <<
"finite_field::PG_element_normalize_from_front "
124 "zero vector" << endl;
129 long int *set_in,
long int *set_out,
int sz,
130 int old_length,
int new_length,
int *v)
134 for (i = 0; i < sz; i++) {
140 long int rk,
int old_length,
int new_length,
int *v)
155 cout <<
"finite_field::PG_element_unrank_fining "
160 cout <<
"finite_field::PG_element_unrank_fining "
213 cout <<
"finite_field::PG_element_unrank_fining "
214 "a is illegal" << endl;
224 cout <<
"finite_field::PG_element_rank_fining "
233 if (v[0] == 1 && v[1] == 0) {
236 else if (v[0] == 0 && v[1] == 1) {
245 if (v[0] == 0 && v[1] == 0) {
249 a = (
q + 1) * v[2] + 2;
250 if (v[0] == 1 && v[1] == 0) {
253 else if (v[0] == 0 && v[1] == 1) {
264 int *v,
int len,
int a)
269 cout <<
"finite_field::PG_element_unrank_gary_cook "
274 cout <<
"finite_field::PG_element_unrank_gary_cook "
278 qm1o2 = (
q - 1) >> 1;
280 cout <<
"finite_field::PG_element_unrank_gary_cook "
308 cout <<
"finite_field::PG_element_unrank_gary_cook "
309 "a is illegal" << endl;
314 for (i = 0; i < 3; i++) {
322 int *v,
int stride,
int len,
int &a)
324 int i, j, q_power_j, b, sqj;
328 cout <<
"finite_field::PG_element_rank_modified "
334 cout <<
"the vector before normalization is ";
335 for (i = 0; i < len; i++) {
336 cout << v[i * stride] <<
" ";
342 cout <<
"the vector after normalization is ";
343 for (i = 0; i < len; i++) {
344 cout << v[i * stride] <<
" ";
348 for (i = 0; i < len; i++) {
354 cout <<
"finite_field::PG_element_rank_modified "
355 "zero vector" << endl;
358 for (j = i + 1; j < len; j++) {
370 if (i == 0 && v[i * stride] == 1) {
371 for (j = i + 1; j < len; j++) {
372 if (v[j * stride] != 1) {
383 for (i = len - 1; i >= 0; i--) {
389 cout <<
"finite_field::PG_element_rank_modified "
390 "zero vector" << endl;
393 if (v[i * stride] != 1) {
394 cout <<
"finite_field::PG_element_rank_modified "
395 "vector not normalized" << endl;
399 cout <<
"i=" << i << endl;
405 for (j = 0; j < i; j++) {
411 cout <<
"b=" << b << endl;
412 cout <<
"sqj=" << sqj << endl;
417 for (j = i - 1; j >= 0; j--) {
423 cout <<
"j=" << j <<
", a=" << a << endl;
428 cout <<
"a=" << a << endl;
444 int *v,
int stride,
int len,
int a)
446 int n, l, ql, sql, k, j, r, a1 = a;
450 cout <<
"finite_field::PG_element_unrank_modified "
457 for (k = 0; k < n; k++) {
470 for (k = 0; k < n; k++) {
490 for (k = l + 1; k < n; k++) {
494 if (l == n - 1 && a >= sql) {
507 for ( ; j < l; j++) {
512 cout <<
"finite_field::PG_element_unrank_modified "
513 "a too large" << endl;
514 cout <<
"len = " << len << endl;
515 cout <<
"a = " << a1 << endl;
520 int *v,
int stride,
int len,
long int &a)
523 long int q_power_j, b, sqj;
527 cout <<
"finite_field::PG_element_rank_modified_lint "
533 cout <<
"the vector before normalization is ";
534 for (i = 0; i < len; i++) {
535 cout << v[i * stride] <<
" ";
541 cout <<
"the vector after normalization is ";
542 for (i = 0; i < len; i++) {
543 cout << v[i * stride] <<
" ";
547 for (i = 0; i < len; i++) {
553 cout <<
"finite_field::PG_element_rank_modified_lint "
554 "zero vector" << endl;
557 for (j = i + 1; j < len; j++) {
569 if (i == 0 && v[i * stride] == 1) {
570 for (j = i + 1; j < len; j++) {
571 if (v[j * stride] != 1) {
582 for (i = len - 1; i >= 0; i--) {
588 cout <<
"finite_field::PG_element_rank_modified_lint "
589 "zero vector" << endl;
592 if (v[i * stride] != 1) {
593 cout <<
"finite_field::PG_element_rank_modified_lint "
594 "vector not normalized" << endl;
598 cout <<
"i=" << i << endl;
604 for (j = 0; j < i; j++) {
610 cout <<
"b=" << b << endl;
611 cout <<
"sqj=" << sqj << endl;
616 for (j = i - 1; j >= 0; j--) {
622 cout <<
"j=" << j <<
", a=" << a << endl;
627 cout <<
"a=" << a << endl;
643 int *M,
int k,
int n,
long int *rank_vec)
647 for (i = 0; i < k; i++) {
653 int *M,
int k,
int n,
long int *rank_vec)
657 for (i = 0; i < k; i++) {
663 int *v,
int stride,
int len,
long int a)
665 long int n, l, ql, sql, k, j, r, a1 = a;
669 cout <<
"finite_field::PG_element_unrank_modified_lint "
676 for (k = 0; k < n; k++) {
689 for (k = 0; k < n; k++) {
709 for (k = l + 1; k < n; k++) {
713 if (l == n - 1 && a >= sql) {
726 for ( ; j < l; j++) {
731 cout <<
"finite_field::PG_element_unrank_modified_lint "
732 "a too large" << endl;
733 cout <<
"len = " << len << endl;
734 cout <<
"l = " << l << endl;
735 cout <<
"a = " << a1 << endl;
736 cout <<
"q = " <<
q << endl;
737 cout <<
"ql = " << ql << endl;
738 cout <<
"sql = q^0 + q^1 + \\cdots + q^{l-1} = " << sql << endl;
743 int *v,
int stride,
int len,
int m,
long int &a)
749 for (i = 0; i < m; i++) {
763 int *v,
int stride,
int len,
int m,
long int a)
769 for (i = 0; i < m; i++) {
801 int *genma,
int k,
int n,
long int *&point_list,
int &nb_points,
804 int f_v = (verbose_level >= 1);
813 cout <<
"finite_field::all_PG_elements_in_subspace" << endl;
820 for (i = 0; i < nb_points; i++) {
823 cout <<
"message " << i <<
" / " << nb_points <<
" is ";
829 cout <<
"yields word ";
835 cout <<
"which has rank " << a << endl;
843 cout <<
"finite_field::all_PG_elements_in_subspace "
849 int *genma,
int k,
int n,
long int *point_list,
int &nb_points,
852 int f_v = (verbose_level >= 1);
860 cout <<
"finite_field::all_PG_elements_in_subspace_array_is_given" << endl;
867 for (i = 0; i < nb_points; i++) {
870 cout <<
"message " << i <<
" / " << nb_points <<
" is ";
876 cout <<
"yields word ";
882 cout <<
"which has rank " << j << endl;
890 cout <<
"finite_field::all_PG_elements_in_subspace_array_is_given "
902 for (i = 0; i < l; i++) {
905 for (j = 0; j < n + 1; j++) {
909 cout <<
" : " << a << endl;
921 for (i = 0; i < l; i++) {
924 for (j = 0; j < n + 1; j++) {
928 cout <<
" : " << a << endl;
940 for (i = 0; i < l; i++) {
943 for (j = 0; j < n; j++) {
953 long int *set_in,
int set_size_in,
long int *&set_out,
int &set_size_out,
956 int f_v = (verbose_level >= 1);
959 cout <<
"finite_field::do_cone_over" << endl;
976 P2->init(n + 1,
this,
983 set_size_out = 1 +
q * set_size_in;
1000 for (h = 0; h < set_size_in; h++) {
1002 for (u = 0; u <
q; u++) {
1015 if (cnt != set_size_out) {
1016 cout <<
"finite_field::do_cone_over cnt != set_size_out" << endl;
1024 cout <<
"finite_field::do_cone_over done" << endl;
1030 long int *set_in,
int set_size,
1031 long int *&the_set_out,
int &set_size_out,
1035 int f_v = (verbose_level >= 1);
1038 cout <<
"finite_field::do_blocking_set_family_3" << endl;
1044 cout <<
"finite_field::do_blocking_set_family_3 "
1045 "we need n = 2" << endl;
1049 cout <<
"finite_field::do_blocking_set_family_3 "
1050 "we need q even" << endl;
1053 if (set_size !=
q + 2) {
1054 cout <<
"finite_field::do_blocking_set_family_3 "
1055 "we need set_size == q + 2" << endl;
1086 cout <<
"choosing random permutation" << endl;
1089 cout << idx[0] <<
", ";
1090 cout << idx[1] <<
", ";
1091 cout << idx[2] <<
", ";
1092 cout << idx[3] << endl;
1094 for (i = 0; i < 4; i++) {
1095 p_idx[i] = set_in[idx[i]];
1110 cout <<
"diaginal points not collinear!" << endl;
1116 for (i = 0; i < set_size; i++) {
1122 cout <<
"nb=" << nb << endl;
1124 cout <<
"the diagonal line is external!" << endl;
1131 int fundamental_quadrangle[4] = {0,1,2,3};
1134 for (i = 0; i < 4; i++) {
1135 if (!int_vec_search_linear(set_in, set_size, fundamental_quadrangle[i], j)) {
1136 cout <<
"the point " << fundamental_quadrangle[i] <<
" is not contained in the hyperoval" << endl;
1141 cout <<
"the fundamental quadrangle is contained, the positions are " << endl;
1142 cout << idx[0] <<
", ";
1143 cout << idx[1] <<
", ";
1144 cout << idx[2] <<
", ";
1145 cout << idx[3] << endl;
1147 for (i = 0; i < 4; i++) {
1148 p_idx[i] = set_in[idx[i]];
1162 cout <<
"The diagonal line is " << diag_line << endl;
1165 int_matrix_print(basis, 2, 3);
1168 cout <<
"diagonal points not collinear!" << endl;
1172 for (i = 0; i < set_size; i++) {
1174 if (P->Incidence[pt * P->
N_lines + diag_line]) {
1178 cout <<
"nb=" << nb << endl;
1180 cout <<
"the diagonal line is external!" << endl;
1183 cout <<
"error: the diagonal line is not external" << endl;
1190 for (i = 4; i < set_size; i++) {
1191 pt = set_in[idx[i]];
1192 for (j = 0; j < P->
r; j++) {
1200 cout <<
"we created a blocking set of lines of "
1201 "size " << S->
k <<
":" << endl;
1217 cout <<
"the point types are:" << endl;
1222 for (i = 0; i <= P->
N_points; i++) {
1224 cout << i <<
"^" << pt_type[i] <<
" ";
1230 sz = ((
q *
q) >> 1) + ((3 *
q) >> 1) - 4;
1233 cout <<
"the size does not match the expected size" << endl;
1237 cout <<
"the size is OK" << endl;
1242 for (i = 0; i < sz; i++) {
1254 std::string &fname,
int &nb_pts,
long int *&Pts,
1259 int f_v = (verbose_level >= 1);
1262 cout <<
"finite_field::create_Baer_substructure" << endl;
1270 int i, j, a, b, index, f_is_in_subfield;
1281 cout <<
"q != i_power_j(p, e >> 1)" << endl;
1285 cout <<
"Q=" << Q << endl;
1286 cout <<
"q=" <<
q << endl;
1288 index = (Q - 1) / (
q - 1);
1289 cout <<
"index=" << index << endl;
1294 for (i = 0; i < P2->
N_points; i++) {
1296 for (j = 0; j < d; j++) {
1299 f_is_in_subfield =
FALSE;
1300 if (a == 0 || (b % index) == 0) {
1301 f_is_in_subfield =
TRUE;
1303 if (!f_is_in_subfield) {
1311 cout <<
"the Baer substructure PG(" << n <<
"," <<
q
1312 <<
") inside PG(" << n <<
"," << Q <<
") has size "
1313 << sz <<
":" << endl;
1314 for (i = 0; i < sz; i++) {
1315 cout << Pts[i] <<
" ";
1322 sprintf(str,
"_%d_%d.txt", n, Q);
1326 fname.assign(
"Baer_substructure_in_PG");
1336 std::string &label_txt,
1337 std::string &label_tex,
1338 int &nb_pts,
long int *&Pts,
1341 int f_v = (verbose_level >= 1);
1344 cout <<
"finite_field::create_BLT_from_database" << endl;
1350 int c1 = 0, c2 = 0, c3 = 0;
1364 cout <<
"i : orthogonal rank : point : projective rank" << endl;
1366 for (i = 0; i < nb_pts; i++) {
1378 cout << setw(4) << i <<
" : " << setw(4) << BLT[i] <<
" : ";
1380 cout <<
" : " << setw(5) << j << endl;
1385 cout <<
"list of points:" << endl;
1386 cout << nb_pts << endl;
1387 for (i = 0; i < nb_pts; i++) {
1388 cout << Pts[i] <<
" ";
1396 sprintf(str,
"%d_%d_embedded",
q, BLT_k);
1397 sprintf(str2,
"%d\\_%d\\_embedded",
q, BLT_k);
1398 label_txt.assign(
"BLT_");
1399 label_txt.append(str);
1404 sprintf(str,
"%d_%d",
q, BLT_k);
1405 sprintf(str2,
"%d\\_%d",
q, BLT_k);
1406 label_txt.assign(
"BLT_");
1407 label_txt.append(str);
1422 std::string &label_txt,
1423 std::string &label_tex,
1424 int &nb_pts,
long int *&Pts,
1427 int f_v = (verbose_level >= 1);
1430 cout <<
"finite_field::create_orthogonal" << endl;
1432 int c1 = 1, c2 = 0, c3 = 0;
1443 if (epsilon == -1) {
1446 cout <<
"c1=" << c1 <<
" c2=" << c2 <<
" c3=" << c3 << endl;
1450 cout <<
"orthogonal rank : point : projective rank" << endl;
1452 for (i = 0; i < nb_pts; i++) {
1457 cout << setw(4) << i <<
" : ";
1459 cout <<
" : " << setw(5) << j << endl;
1464 cout <<
"list of points:" << endl;
1465 cout << nb_pts << endl;
1466 for (i = 0; i < nb_pts; i++) {
1467 cout << Pts[i] <<
" ";
1479 label_txt.assign(str);
1490 std::string &label_txt,
1491 std::string &label_tex,
1492 int &nb_pts,
long int *&Pts,
1496 int f_v = (verbose_level >= 1);
1499 cout <<
"finite_field::create_hermitian" << endl;
1507 H->
init(
this, d, verbose_level - 1);
1515 cout <<
"hermitian rank : point : projective rank" << endl;
1517 for (i = 0; i < nb_pts; i++) {
1522 cout << setw(4) << i <<
" : ";
1524 cout <<
" : " << setw(5) << j << endl;
1529 cout <<
"list of points:" << endl;
1530 cout << nb_pts << endl;
1531 for (i = 0; i < nb_pts; i++) {
1532 cout << Pts[i] <<
" ";
1539 sprintf(str,
"H_%d_%d.txt", n,
q);
1540 sprintf(str2,
"H\\_%d\\_%d.txt", n,
q);
1541 label_txt.assign(str);
1552 int f_construction_A,
int f_hyperoval,
int f_construction_B,
1553 std::string &fname,
int &nb_pts,
long int *&Pts,
1557 int f_v = (verbose_level >= 1);
1560 cout <<
"finite_field::create_ttp_code" << endl;
1567 int f_elements_exponential =
TRUE;
1568 string symbol_for_print_subfield;
1572 cout <<
"finite_field::create_ttp_code" << endl;
1575 symbol_for_print_subfield.assign(
"\\alpha");
1580 f_construction_A, f_hyperoval,
1585 cout <<
"H_subfield:" << endl;
1586 cout <<
"m=" << m << endl;
1587 cout <<
"n=" << n << endl;
1603 cout <<
"H_subfield:" << endl;
1606 symbol_for_print_subfield, H_subfield, m, n);
1613 cout <<
"i : point : projective rank" << endl;
1615 for (i = 0; i < nb_pts; i++) {
1616 for (j = 0; j < d; j++) {
1617 v[j] = H_subfield[j * n + i];
1622 cout << setw(4) << i <<
" : ";
1624 cout <<
" : " << setw(5) << j << endl;
1629 cout <<
"list of points for the ttp code:" << endl;
1631 for (i = 0; i < N; i++) {
1632 cout << L[i] <<
" ";
1638 if (f_construction_A) {
1640 snprintf(str, 1000,
"ttp_code_Ah_%d.txt", Fq->
q);
1643 snprintf(str, 1000,
"ttp_code_A_%d.txt", Fq->
q);
1646 else if (f_construction_B) {
1647 snprintf(str, 1000,
"ttp_code_B_%d.txt", Fq->
q);
1662 std::string &label_txt,
1663 std::string &label_tex,
1664 int &nb_pts,
long int *&Pts,
1668 int f_v = (verbose_level >= 1);
1671 cout <<
"finite_field::create_segre_variety" << endl;
1676 int i, j, d, N1,
N2, rk;
1682 cout <<
"finite_field::create_segre_variety" << endl;
1683 cout <<
"a=" << a <<
" (projective)" << endl;
1684 cout <<
"b=" << b <<
" (projective)" << endl;
1686 d = (a + 1) * (b + 1);
1688 cout <<
"d=" << d <<
" (vector space dimension)" << endl;
1712 for (i = 0; i < N1; i++) {
1714 for (j = 0; j <
N2; j++) {
1721 cout << setw(4) << nb_pts - 1 <<
" : " << endl;
1723 cout <<
" : " << setw(5) << rk << endl;
1730 sprintf(str,
"segre_variety_%d_%d_%d", a, b,
q);
1731 sprintf(str2,
"segre\\_variety\\_%d\\_%d\\_%d", a, b,
q);
1732 label_txt.assign(str);
1746 long int *the_set_in,
int set_size_in,
1747 long int *&the_set_out,
int &set_size_out,
1752 int f_v = (verbose_level >= 1);
1753 int f_vv = (verbose_level >= 2);
1758 int *v, *w1, *w2, *w3, *v2;
1761 int *pair_embedding;
1764 cout <<
"finite_field::do_andre for a set of size " << set_size_in << endl;
1782 cout <<
"before subfield_embedding_2dimensional" << endl;
1786 components, embedding, pair_embedding, verbose_level);
1803 cout <<
"after subfield_embedding_2dimensional" << endl;
1807 components, embedding, pair_embedding);
1811 cout <<
"alpha=" <<
alpha << endl;
1826 for (i = 0; i < set_size_in; i++) {
1828 cout <<
"input point " << i <<
" is "
1829 << the_set_in[i] <<
" : ";
1835 cout <<
" becomes ";
1857 for (h = 0; h < 2; h++) {
1859 a0 = components[a * 2 + 0];
1860 a1 = components[a * 2 + 1];
1862 b0 = components[b * 2 + 0];
1863 b1 = components[b * 2 + 1];
1883 for (h = 0; h < Fq->
q + 1; h++) {
1890 for (k = 0; k < 4; k++) {
1891 w3[k] = Fq->
add(Fq->
mult(v2[0], w1[k]),
1892 Fq->
mult(v2[1], w2[k]));
1901 cout <<
" rank " << a << endl;
1903 the_set_out[set_size_out++] = a;
1913 for (h = 0; h < 2; h++) {
1915 a0 = components[a * 2 + 0];
1916 a1 = components[a * 2 + 1];
1927 cout <<
" rank " << a << endl;
1929 the_set_out[set_size_out++] = a;
1934 for (i = 0; i < set_size_out; i++) {
1937 cout << setw(3) << i <<
" : " << setw(5) << a <<
" : ";
1958 long int *set_in,
long int *&set_out,
int set_size,
1961 int f_v = (verbose_level >= 1);
1966 int c1 = 0, c2 = 0, c3 = 0;
1969 cout <<
"finite_field::do_embed_orthogonal" << endl;
1976 verbose_level - 2 );
1979 if (epsilon == -1) {
1986 for (h = 0; h < set_size; h++) {
2000 long int *set_in,
long int *&set_out,
int set_size,
2003 int f_v = (verbose_level >= 1);
2010 cout <<
"finite_field::do_embed_points" << endl;
2016 for (h = 0; h < set_size; h++) {
2030 cout <<
"finite_field::do_embed_points done" << endl;
2038 int i, j, x, y, v[3];
2042 for (x = 0; x <
q; x++) {
2043 for (y = 0; y <
q; y++) {
2044 A[(
q - 1 - y) *
q + x] = 0;
2047 for (i = 0; i < len; i++) {
2053 cout <<
"(" << v[0] <<
"," << v[1]
2054 <<
"," << v[2] <<
")" << endl;
2059 A[(
q - 1 - y) *
q + x] = 1;
2061 for (i = 0; i <
q; i++) {
2062 for (j = 0; j <
q; j++) {
2063 cout << A[i *
q + j];
2074 int f_v = (verbose_level >= 1);
2076 int k, nb_rows, nb_cols, nb_r1, nb_r2, row, col;
2086 int a, u, ac, i, d, idx, mtx_rank;
2091 cout <<
"finite_field::simeon s=" << s << endl;
2097 nb_rows = nb_r1 * nb_r2;
2099 cout <<
"nb_r1=" << nb_r1 << endl;
2100 cout <<
"nb_r2=" << nb_r2 << endl;
2101 cout <<
"nb_rows=" << nb_rows << endl;
2102 cout <<
"nb_cols=" << nb_cols << endl;
2106 M =
NEW_int(nb_rows * nb_cols);
2117 for (i = 0; i < len; i++) {
2125 if (nb_A * nb_U != nb_rows) {
2126 cout <<
"nb_A * nb_U != nb_rows" << endl;
2130 cout <<
"nb_A=" << nb_A << endl;
2131 cout <<
"nb_U=" << nb_U << endl;
2138 for (a = 0; a < nb_A; a++) {
2140 cout <<
"a=" << a <<
" / " << nb_A <<
":" << endl;
2144 if (ac != len - (k - 2)) {
2145 cout <<
"arc_generator::simeon ac != len - (k - 2)" << endl;
2155 for (u = 0; u < nb_U; u++, row++) {
2158 for (i = 0; i < k - 1; i++) {
2167 for (col = 0; col < nb_cols; col++) {
2169 cout <<
"row=" << row <<
" / " << nb_rows
2170 <<
" col=" << col <<
" / "
2171 << nb_cols <<
":" << endl;
2182 for (i = 0; i < k - 2; i++) {
2190 Coord, C, U1, k, s ,
2193 cout <<
"d=" << d << endl;
2196 M[row * nb_cols + col] = d;
2203 cout <<
"simeon, the matrix M is:" << endl;
2212 cout <<
"nb_rows=" << nb_rows << endl;
2213 cout <<
"nb_cols=" << nb_cols << endl;
2214 cout <<
"s=" << s << endl;
2219 cout <<
"mtx_rank=" << mtx_rank << endl;
2239 cout <<
"finite_field::simeon s=" << s <<
" done" << endl;
2267 int f_v = (verbose_level >= 1);
2268 int f_vv = (verbose_level >= 2);
2271 cout <<
"finite_field::isomorphism_to_special_orthogonal" << endl;
2299 for (i = 0; i < 6; i++) {
2311 cout <<
"finite_field::isomorphism_to_special_orthogonal "
2312 "exterior_square :" << endl;
2318 for (j = 0; j < 6; j++) {
2327 cout <<
"finite_field::isomorphism_to_special_orthogonal "
2328 "orthogonal matrix :" << endl;
2339 cout <<
"finite_field::isomorphism_to_special_orthogonal "
2340 "orthogonal matrix in the special form:" << endl;
2346 cout <<
"finite_field::isomorphism_to_special_orthogonal done" << endl;
2353 int &a,
int &b,
int verbose_level)
2365 for (i = 1; i < 6; i++) {
2397 for (i = 0; i < 4; i++) {
global functions related to finite fields, irreducible polynomials and such
const char * plus_minus_letter(int epsilon)
various functions related to coding theory
void twisted_tensor_product_codes(int *&H_subfield, int &m, int &n, field_theory::finite_field *F, field_theory::finite_field *f, int f_construction_A, int f_hyperoval, int f_construction_B, int verbose_level)
a collection of combinatorial functions
void unrank_k_subset(int rk, int *set, int n, int k)
long int generalized_binomial(int n, int k, int q)
void random_permutation(int *random_permutation, long int n)
long int int_n_choose_k(int n, int k)
void set_complement(int *subset, int subset_size, int *complement, int &size_complement, int universal_set_size)
subset of size k of a set of size n
void init(int n, int verbose_level)
void add_element(int elt)
void print(std::ostream &ost, std::vector< int > &v)
a collection of functions related to sorted vectors
int int_vec_search_linear(int *v, int len, int a, int &idx)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void print_naked(int f_backwards)
void create_BLT_from_database(int f_embedded, int BLT_k, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void PG_element_rank_modified(int *v, int stride, int len, int &a)
void PG_elements_embed(long int *set_in, long int *set_out, int sz, int old_length, int new_length, int *v)
void PG_element_normalize_from_front(int *v, int stride, int len)
void all_PG_elements_in_subspace(int *genma, int k, int n, long int *&point_list, int &nb_points, int verbose_level)
void create_ttp_code(finite_field *Fq, int f_construction_A, int f_hyperoval, int f_construction_B, std::string &fname, int &nb_pts, long int *&Pts, int verbose_level)
void PG_elements_unrank_lint(int *M, int k, int n, long int *rank_vec)
void create_orthogonal(int epsilon, int n, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void create_hermitian(int n, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
long int nb_calls_to_PG_element_unrank_modified
void PG_element_rank_modified_not_in_subspace(int *v, int stride, int len, int m, long int &a)
long int nb_calls_to_PG_element_rank_modified
void do_embed_orthogonal(int epsilon, int n, long int *set_in, long int *&set_out, int set_size, int verbose_level)
void isomorphism_to_special_orthogonal(int *A4, int *A6, int verbose_level)
orthogonal_geometry::orthogonal_indexing * Orthogonal_indexing
void do_blocking_set_family_3(int n, long int *set_in, int set_size, long int *&the_set_out, int &set_size_out, int verbose_level)
void create_segre_variety(int a, int b, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void PG_element_normalize(int *v, int stride, int len)
void simeon(int n, int len, long int *S, int s, int verbose_level)
void PG_element_unrank_modified(int *v, int stride, int len, int a)
void all_PG_elements_in_subspace_array_is_given(int *genma, int k, int n, long int *point_list, int &nb_points, int verbose_level)
void minimal_orbit_rep_under_stabilizer_of_frame_characteristic_two(int x, int y, int &a, int &b, int verbose_level)
void do_embed_points(int n, long int *set_in, long int *&set_out, int set_size, int verbose_level)
int evaluate_Fermat_cubic(int *v)
void PG_element_unrank_fining(int *v, int len, int a)
int test_if_vectors_are_projectively_equal(int *v1, int *v2, int len)
void do_cone_over(int n, long int *set_in, int set_size_in, long int *&set_out, int &set_size_out, int verbose_level)
int frobenius_power(int a, int frob_power)
void do_andre(finite_field *Fq, long int *the_set_in, int set_size_in, long int *&the_set_out, int &set_size_out, int verbose_level)
int PG_element_rank_fining(int *v, int len)
void display_all_PG_elements(int n)
void print_set_in_affine_plane(int len, long int *S)
void PG_element_unrank_modified_lint(int *v, int stride, int len, long int a)
void subfield_embedding_2dimensional(finite_field &subfield, int *&components, int *&embedding, int *&pair_embedding, int verbose_level)
void PG_element_unrank_modified_not_in_subspace(int *v, int stride, int len, int m, long int a)
void klein_to_wedge(int *K, int *W)
void display_all_AG_elements(int n)
long int projective_point_rank(int n, int *v)
void latex_matrix(std::ostream &f, int f_elements_exponential, std::string &symbol_for_print, int *M, int m, int n)
linear_algebra::linear_algebra * Linear_algebra
void print_embedding(finite_field &subfield, int *components, int *embedding, int *pair_embedding)
void projective_point_unrank(int n, int *v, int rk)
void display_all_PG_elements_not_in_subspace(int n, int m)
long int PG_element_embed(long int rk, int old_length, int new_length, int *v)
void PG_elements_rank_lint(int *M, int k, int n, long int *rank_vec)
void create_Baer_substructure(int n, finite_field *Fq, std::string &fname, int &nb_pts, long int *&Pts, int verbose_level)
void PG_element_rank_modified_lint(int *v, int stride, int len, long int &a)
void wedge_to_klein(int *W, int *K)
void PG_element_apply_frobenius(int n, int *v, int f)
void PG_element_unrank_gary_cook(int *v, int len, 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)
long int nb_AG_elements(int n, int q)
long int nb_PG_elements_not_in_subspace(int n, int m, int q)
long int nb_pts_Qepsilon(int epsilon, int k, int q)
void init(field_theory::finite_field *F, int nb_vars, int verbose_level)
void Sbar_unrank(int *v, int len, int rk, int verbose_level)
int * Hyperplane_to_point
projective space PG(n,q) of dimension n over Fq
void point_types_of_line_set(long int *set_of_lines, int set_size, int *type, int verbose_level)
void line_intersection(int line_rank, long int *set, int set_size, std::vector< int > &point_indices, int verbose_level)
projective_space_implementation * Implementation
int is_incident(int pt, int line)
long int rank_point(int *v)
void projective_space_init(int n, field_theory::finite_field *F, int f_init_incidence_structure, int verbose_level)
polarity * Standard_polarity
int intersection_of_two_lines(long int l1, long int l2)
long int line_through_two_points(long int p1, long int p2)
void unrank_point(int *v, long int rk)
void unrank_line(int *basis, long int rk)
provides access to pre-computed combinatorial data in encoded form
long int * BLT_representative(int q, int no)
void mult_vector_from_the_left(int *v, int *A, int *vA, int m, int n)
int BallChowdhury_matrix_entry(int *Coord, int *C, int *U, int k, int sz_U, int *T, int verbose_level)
void exterior_square(int *An, int *An2, int n, int verbose_level)
void mult_matrix_matrix(int *A, int *B, int *C, int m, int n, int o, int verbose_level)
int Gauss_easy(int *A, int m, int n)
void choose_anisotropic_form(int &c1, int &c2, int &c3, int verbose_level)
void matrix_inverse(int *A, int *Ainv, int n, int verbose_level)
basic number theoretic functions
int i_power_j(int i, int j)
data_structures::int_vec * Int_vec
void Q_epsilon_unrank(int *v, int stride, int epsilon, int k, int c1, int c2, int c3, long int a, int verbose_level)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_print_integer_matrix_width(A, B, C, D, E, F)
#define Int_matrix_print(A, B, C)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects