16namespace layer1_foundations {
69 long int qnp1, qn, q2, a, b, denom, res;
74 denom = (q2 - 1) * (q2 - q);
75 a = (qnp1 - 1) * (qnp1 - q) / denom;
76 b = (qn - 1) * (qn - q) / denom;
88 cout <<
"geometry_global::AG_element_rank len <= 0" << endl;
92 for (i = len - 1; i >= 0; i--) {
108 cout <<
"geometry_global::AG_element_unrank len <= 0" << endl;
112 for (i = 0; i < len; i++) {
126 cout <<
"geometry_global::AG_element_next len <= 0" << endl;
130 for (i = len - 1; i >= 0; i--) {
131 if (v[i * stride] < q - 1) {
152 cout <<
"geometry_global::AG_element_rank_longinteger len <= 0" << endl;
155 a.
create(0, __FILE__, __LINE__);
156 Q.
create(q, __FILE__, __LINE__);
157 for (i = len - 1; i >= 0; i--) {
179 cout <<
"geometry_global::AG_element_unrank_longinteger len <= 0" << endl;
182 for (i = 0; i < len; i++) {
196 for (j = m + 1; j < n + 1; j++) {
209 int verbose_level = 1;
213 cout <<
"all elements of PG_" << n <<
"(" << q <<
")" << endl;
216 for (m = 0; m < n; m++) {
217 cout <<
"all elements of PG_" << n <<
"(" << q <<
"), "
218 "not in a subspace of dimension " << m << endl;
228 int f_v = (verbose_level >= 1);
231 cout <<
"geometry_global::create_Fisher_BLT_set" << endl;
235 U.
setup(FQ, Fq, verbose_level);
238 cout <<
"geometry_global::create_Fisher_BLT_set done" << endl;
247 int f_v = (verbose_level >= 1);
250 cout <<
"geometry_global::create_Linear_BLT_set" << endl;
254 U.
setup(FQ, Fq, verbose_level);
257 cout <<
"geometry_global::create_Linear_BLT_set done" << endl;
266 int f_v = (verbose_level >= 1);
269 cout <<
"geometry_global::create_Mondello_BLT_set" << endl;
273 U.
setup(FQ, Fq, verbose_level);
276 cout <<
"geometry_global::create_Mondello_BLT_set done" << endl;
282 int *form_i,
int *form_j,
int *form_coeff)
286 for (k = 0; k < form_nb_terms; k++) {
287 cout <<
"i=" << form_i[k] <<
" j=" << form_j[k]
288 <<
" coeff=" << form_coeff[k] << endl;
294 int nb_terms,
int *form_i,
int *form_j,
int *form_coeff,
int *Gram)
299 for (k = 0; k < nb_terms; k++) {
306 Gram[i * n + j] = F.
add(Gram[i * n + j], c);
307 Gram[j * n + i] = F.
add(Gram[j * n + i], c);
313 int &nb_terms,
int *form_i,
int *form_j,
int *form_coeff,
315 int i,
int j,
int coeff)
317 form_i[nb_terms] = i;
318 form_j[nb_terms] = j;
319 form_coeff[nb_terms] = coeff;
321 Gram[i * n + j] = F.
mult(2, coeff);
324 Gram[i * n + j] = coeff;
325 Gram[j * n + i] = coeff;
332void geometry_global::determine_conic(
int q, std::string &override_poly,
333 long int *input_pts,
int nb_pts,
int verbose_level)
335 int f_v = (verbose_level >= 1);
336 int f_vv = (verbose_level >= 2);
345 cout <<
"determine_conic q=" << q << endl;
346 cout <<
"input_pts: ";
354 cout <<
"determine_conic before P->init" << endl;
361 cout <<
"determine_conic after P->init" << endl;
364 six_coeffs, verbose_level - 2);
367 cout <<
"determine_conic the six coefficients are ";
372 long int points[1000];
377 points, nb_points, verbose_level - 2);
379 cout <<
"the " << nb_points <<
" conic points are: ";
382 for (i = 0; i < nb_points; i++) {
384 cout << i <<
" : " << points[i] <<
" : ";
395 int *set,
int set_sz,
int k,
int verbose_level)
410 cout <<
"test_if_arc testing set" << endl;
418 for (i = 0; i < 3; i++) {
419 subset1[i] = set[subset[i]];
423 cout <<
"testing subset ";
428 for (i = 0; i < 3; i++) {
430 for (j = 0; j < k; j++) {
431 Mtx[i * k + j] = pt_coords[a * k + j];
435 cout <<
"matrix:" << endl;
441 cout <<
"not an arc" << endl;
450 cout <<
"passes the arc test" << endl;
462 int f_classical,
int f_Uab,
int parameter_a,
int parameter_b,
463 std::string &fname,
int &nb_pts,
long int *&Pts,
466 int f_v = (verbose_level >= 1);
472 cout <<
"create_Buekenhout_Metz" << endl;
479 f_Uab, parameter_a, parameter_b, f_classical, verbose_level);
497 for (i = 0; i < nb_pts; i++) {
503 cout <<
"i : point : projective rank" << endl;
505 for (i = 0; i < nb_pts; i++) {
509 cout << setw(4) << i <<
" : ";
511 cout <<
" : " << setw(5) << rk << endl;
519 fname.assign(
"unital_");
559 else if (epsilon == 0) {
563 cout <<
"count_T1 epsilon = " << epsilon
564 <<
" not yet implemented, returning 0" << endl;
588 else if (epsilon == 1) {
591 else if (epsilon == -1) {
595 cout <<
"nb_pts_Qepsilon epsilon must be one of 0,1,-1" << endl;
605 else if (epsilon == 1) {
608 else if (epsilon == -1) {
612 cout <<
"dimension_given_Witt_index "
613 "epsilon must be 0,1,-1" << endl;
625 cout <<
"Witt_index dimension k must be even" << endl;
626 cout <<
"k = " << k << endl;
627 cout <<
"epsilon = " << epsilon << endl;
632 else if (epsilon == 1) {
634 cout <<
"Witt_index dimension k must be odd" << endl;
635 cout <<
"k = " << k << endl;
636 cout <<
"epsilon = " << epsilon << endl;
641 else if (epsilon == -1) {
643 cout <<
"Witt_index dimension k must be odd" << endl;
644 cout <<
"k = " << k << endl;
645 cout <<
"epsilon = " << epsilon << endl;
651 cout <<
"Witt_index epsilon must be one of 0,1,-1" << endl;
695 cout <<
"nb_pts_S n <= 0" << endl;
718 cout <<
"nb_pts_N n <= 0" << endl;
722 return (
long int) (q - 1) * (
long int) (q - 1);
741 cout <<
"nb_pts_N1 n <= 0" << endl;
762 cout <<
"nb_pts_Sbar n <= 0" << endl;
773 cout <<
"geometry_global::nb_pts_Sbar a < 0, overflow" << endl;
785 cout <<
"nb_pts_Nbar n <= 0" << endl;
791 cout <<
"nb_pts_Nbar should only be called for n = 1" << endl;
810 long int i, j, a, nb;
811 int c1 = 0, c2 = 0, c3 = 0;
812 int verbose_level = 0;
814 cout <<
"test_Orthogonal" << endl;
815 GFq.finite_field_init(q,
FALSE , verbose_level);
820 cout <<
"Q^" << epsilon <<
"(" << k <<
"," << q <<
") has "
821 << nb <<
" singular points" << endl;
825 else if (epsilon == 1) {
827 else if (epsilon == -1) {
828 GFq.Linear_algebra->choose_anisotropic_form(c1, c2, c3,
TRUE);
830 for (i = 0; i < nb; i++) {
831 GFq.Orthogonal_indexing->Q_epsilon_unrank(v, stride, epsilon, k, c1, c2, c3, i, 0 );
835 for (h = 0; h < len; h++) {
843 a =
GFq.Linear_algebra->evaluate_quadratic_form(v, stride, epsilon, k,
846 j =
GFq.Orthogonal_indexing->Q_epsilon_rank(v, stride, epsilon, k, c1, c2, c3, 0 );
850 cout <<
" -- unit vector";
852 cout <<
" weight " << wt <<
" vector";
856 cout <<
"error" << endl;
863 cout <<
"test_Orthogonal done" << endl;
873 int verbose_level = 0;
875 cout <<
"test_orthogonal" << endl;
876 GFq.finite_field_init(q,
FALSE , verbose_level);
879 cout <<
"\\Omega^+(" << 2 * n <<
"," << q <<
") has " << nb
880 <<
" singular points" << endl;
881 for (i = 0; i < nb; i++) {
882 GFq.Orthogonal_indexing->Sbar_unrank(v, stride, n, i, 0 );
886 a =
GFq.Linear_algebra->evaluate_hyperbolic_quadratic_form(v, stride, n);
888 GFq.Orthogonal_indexing->Sbar_rank(v, stride, n, j, 0 );
889 cout <<
" : " << j << endl;
891 cout <<
"error" << endl;
895 cout <<
"\\Omega^+(" << 2 * n <<
"," << q <<
") has " << nb
896 <<
" singular points" << endl;
898 cout <<
"test_orthogonal done" << endl;
904void geometry_global::create_BLT(
int f_embedded,
905 finite_field *FQ, finite_field *Fq,
910 char *fname,
int &nb_pts,
int *&Pts,
913 int f_v = (verbose_level >= 1);
926 cout <<
"create_BLT" << endl;
930 cout <<
"create_BLT before O->init" << endl;
932 O->finite_field_init(epsilon, n + 1, Fq, verbose_level - 1);
941 cout <<
"create_BLT currently disabled" << endl;
946 strcpy(BLT_label,
"Linear");
950 strcpy(BLT_label,
"Fi");
953 else if (f_Mondello) {
954 strcpy(BLT_label,
"Mondello");
958 strcpy(BLT_label,
"FTWKB");
959 create_FTWKB_BLT_set(O, Pts1, verbose_level - 1);
962 cout <<
"create_BLT no type" << endl;
967 cout <<
"i : orthogonal rank : point : projective rank" << endl;
969 for (i = 0; i < nb_pts; i++) {
970 Q_epsilon_unrank(*Fq, v, 1, epsilon, n, c1, c2, c3, Pts1[i]);
972 PG_element_rank_modified(*Fq, v, 1, d, j);
978 Q_epsilon_unrank(*Fq, v, 1, epsilon, n, c1, c2, c3, Pts1[i]);
981 cout << setw(4) << i <<
" : " << setw(4) << Pts1[i] <<
" : ";
982 int_vec_print(cout, v, d);
983 cout <<
" : " << setw(5) << j << endl;
988 cout <<
"list of points:" << endl;
989 cout << nb_pts << endl;
990 for (i = 0; i < nb_pts; i++) {
991 cout << Pts[i] <<
" ";
998 sprintf(fname,
"BLT_%s_%d_embedded.txt", BLT_label, q);
1001 sprintf(fname,
"BLT_%s_%d.txt", BLT_label, q);
1016static int TDO_upper_bounds_v_max = -1;
1017static int *TDO_upper_bounds_table = NULL;
1018static int *TDO_upper_bounds_table_source = NULL;
1023static int TDO_upper_bounds_initial_data[] = {
1087 cout <<
"TDO_upper_bound i <= 0, i = " << i << endl;
1091 cout <<
"TDO_upper_bound j <= 0, j = " << j << endl;
1095 if (TDO_upper_bounds_v_max == -1) {
1098 if (m > TDO_upper_bounds_v_max) {
1107 cout <<
"TDO_upper_bound = -1 i=" << i <<
" j=" << j << endl;
1116 if (i > TDO_upper_bounds_v_max) {
1117 cout <<
"TDO_upper_bound i > v_max" << endl;
1118 cout <<
"i=" << i << endl;
1119 cout <<
"TDO_upper_bounds_v_max=" << TDO_upper_bounds_v_max << endl;
1123 cout <<
"TDO_upper_bound_internal i <= 0, i = " << i << endl;
1127 cout <<
"TDO_upper_bound_internal j <= 0, j = " << j << endl;
1130 return TDO_upper_bounds_table[(i - 1) * TDO_upper_bounds_v_max + j - 1];
1135 if (i > TDO_upper_bounds_v_max) {
1136 cout <<
"TDO_upper_bound_source i > v_max" << endl;
1137 cout <<
"i=" << i << endl;
1138 cout <<
"TDO_upper_bounds_v_max=" << TDO_upper_bounds_v_max << endl;
1142 cout <<
"TDO_upper_bound_source i <= 0, i = " << i << endl;
1146 cout <<
"TDO_upper_bound_source j <= 0, j = " << j << endl;
1149 return TDO_upper_bounds_table_source[(i - 1) * TDO_upper_bounds_v_max + j - 1];
1158 for (l = 1; l <= ak; l++) {
1170 int n, bound, v2, k2;
1177 bound = ((v * (v - 1)) >> 1);
1180 v2 = (v * (v - 1)) >> 1;
1181 k2 = (k * (k - 1)) >> 1;
1182 for (n = 1; ; n++) {
1200 int i, j, bound, bound_braun, bound_maxfit, u;
1203 TDO_upper_bounds_table =
NEW_int(v_max * v_max);
1204 TDO_upper_bounds_table_source =
NEW_int(v_max * v_max);
1205 TDO_upper_bounds_v_max = v_max;
1206 for (i = 0; i < v_max * v_max; i++) {
1207 TDO_upper_bounds_table[i] = -1;
1208 TDO_upper_bounds_table_source[i] = 0;
1211 if (TDO_upper_bounds_initial_data[u * 3 + 0] == -1)
1213 i = TDO_upper_bounds_initial_data[u * 3 + 0];
1214 j = TDO_upper_bounds_initial_data[u * 3 + 1];
1215 bound = TDO_upper_bounds_initial_data[u * 3 + 2];
1217 if (bound < bound_braun) {
1224 for (i = 1; i <= v_max; i++) {
1225 for (j = 1; j <= i; j++) {
1232 if (bound_maxfit < bound_braun) {
1249 int *new_upper_bounds;
1250 int *new_upper_bounds_source;
1251 int i, j, bound, bound_braun, bound_maxfit, src;
1256 v_max = TDO_upper_bounds_v_max;
1257 new_upper_bounds =
NEW_int(new_v_max * new_v_max);
1258 new_upper_bounds_source =
NEW_int(new_v_max * new_v_max);
1259 for (i = 0; i < new_v_max * new_v_max; i++) {
1260 new_upper_bounds[i] = -1;
1261 new_upper_bounds_source[i] = 0;
1263 for (i = 1; i <= v_max; i++) {
1264 for (j = 1; j <= v_max; j++) {
1267 new_upper_bounds[(i - 1) * new_v_max + (j - 1)] = bound;
1268 new_upper_bounds_source[(i - 1) * new_v_max + (j - 1)] = src;
1272 FREE_int(TDO_upper_bounds_table_source);
1273 TDO_upper_bounds_table = new_upper_bounds;
1274 TDO_upper_bounds_table_source = new_upper_bounds_source;
1275 TDO_upper_bounds_v_max = new_v_max;
1276 for (i = v_max + 1; i <= new_v_max; i++) {
1277 for (j = 1; j <= i; j++) {
1282 if (bound_maxfit < bound_braun) {
1300 int i, k, ak, l, s, m;
1304 for (k = v; k >= 2; k--) {
1306 for (l = 0; l < ak; l++) {
1318static int maxfit_table_v_max = -1;
1319static int *maxfit_table = NULL;
1326 if (maxfit_table_v_max == -1) {
1329 if (m > maxfit_table_v_max) {
1337 if (i > maxfit_table_v_max) {
1338 cout <<
"maxfit_table_v_max i > v_max" << endl;
1339 cout <<
"i=" << i << endl;
1340 cout <<
"maxfit_table_v_max=" << maxfit_table_v_max << endl;
1343 if (j > maxfit_table_v_max) {
1344 cout <<
"maxfit_table_v_max j > v_max" << endl;
1345 cout <<
"j=" << j << endl;
1346 cout <<
"maxfit_table_v_max=" << maxfit_table_v_max << endl;
1350 cout <<
"maxfit_table_v_max i <= 0, i = " << i << endl;
1354 cout <<
"maxfit_table_v_max j <= 0, j = " << j << endl;
1357 return maxfit_table[(i - 1) * maxfit_table_v_max + j - 1];
1364 maxfit_table =
NEW_int(v_max * v_max);
1365 maxfit_table_v_max = v_max;
1372 cout <<
"maxfit_table_reallocate v_max=" << v_max << endl;
1375 maxfit_table =
NEW_int(v_max * v_max);
1376 maxfit_table_v_max = v_max;
1381#define Choose2(x) ((x*(x-1))/2)
1385 int M = maxfit_table_v_max;
1386 int *matrix = maxfit_table;
1387 int m, i, j, inz, gki;
1390 for (i=0; i<M*M; i++) {
1394 for (i=1; i<=M; i++) {
1400 if (j*(j-1)/2 < i*
Choose2(gki)+(inz % i)*gki) {
1406 matrix[(j-1) * M + i-1]=inz;
1407 matrix[(i-1) * M + j-1]=inz;
1424 while (
maxfit(n, m) >= m*k) {
1435 std::string &inverse_isomorphism_klein_quadric_matrix_A6,
1438 int f_v = (verbose_level >= 1);
1441 cout <<
"geometry_global::do_inverse_isomorphism_klein_quadric" << endl;
1448 Int_vec_scan(inverse_isomorphism_klein_quadric_matrix_A6.c_str(), A6, sz);
1450 cout <<
"geometry_global::do_inverse_isomorphism_klein_quadric "
1451 "The input matrix must be of size 6x6" << endl;
1456 cout <<
"A6:" << endl;
1466 O->
init(1 , 6, F, 0 );
1467 Klein->
init(F, O, 0 );
1472 cout <<
"A4:" << endl;
1479 cout <<
"geometry_global::do_inverse_isomorphism_klein_quadric done" << endl;
1488 int f_v = (verbose_level >= 1);
1491 cout <<
"geometry_global::do_rank_points_in_PG" << endl;
1500 cout <<
"geometry_global::do_rank_points_in_PG coeff: ";
1508 for (i = 0; i < m; i++) {
1512 cout <<
" : " << a << endl;
1527 std::string &line_1_basis,
1528 std::string &line_2_basis,
1529 int f_normalize_from_the_left,
int f_normalize_from_the_right,
1532 int f_v = (verbose_level >= 1);
1541 cout <<
"geometry_global::do_intersection_of_two_lines" << endl;
1546 cout <<
"geometry_global::do_intersection_of_two_lines len != 8" << endl;
1547 cout <<
"received " << len << endl;
1552 cout <<
"geometry_global::do_intersection_of_two_lines len != 8" << endl;
1553 cout <<
"received " << len << endl;
1564 cout <<
"geometry_global::do_intersection_of_two_lines rk != 2" << endl;
1565 cout <<
"rk= " << rk << endl;
1573 cout <<
"geometry_global::do_intersection_of_two_lines rk != 2" << endl;
1574 cout <<
"rk= " << rk << endl;
1583 cout <<
"geometry_global::do_intersection_of_two_lines rk != 3" << endl;
1584 cout <<
"rk= " << rk << endl;
1588 if (f_normalize_from_the_left) {
1589 cout <<
"geometry_global::do_intersection_of_two_lines normalizing from the left" << endl;
1590 for (i = 3; i < 4; i++) {
1595 cout <<
"geometry_global::do_intersection_of_two_lines after normalize from the left:" << endl;
1597 cout <<
"rk=" << rk << endl;
1601 if (f_normalize_from_the_right) {
1602 cout <<
"geometry_global::do_intersection_of_two_lines normalizing from the right" << endl;
1603 for (i = 3; i < 4; i++) {
1608 cout <<
"geometry_global::do_intersection_of_two_lines after normalize from the right:" << endl;
1610 cout <<
"rk=" << rk << endl;
1622 cout <<
"geometry_global::do_intersection_of_two_lines done" << endl;
1629 std::string &line_1_basis,
1630 std::string &line_2_basis,
1632 int f_normalize_from_the_left,
int f_normalize_from_the_right,
1635 int f_v = (verbose_level >= 1);
1644 cout <<
"geometry_global::do_transversal" << endl;
1649 cout <<
"geometry_global::do_transversal len != 8" << endl;
1650 cout <<
"received " << len << endl;
1655 cout <<
"geometry_global::do_transversal len != 8" << endl;
1656 cout <<
"received " << len << endl;
1661 cout <<
"geometry_global::do_transversal len != 4" << endl;
1662 cout <<
"received " << len << endl;
1673 cout <<
"geometry_global::do_transversal rk != 3" << endl;
1674 cout <<
"rk= " << rk << endl;
1684 cout <<
"geometry_global::do_transversal rk != 3" << endl;
1685 cout <<
"rk= " << rk << endl;
1693 cout <<
"geometry_global::do_transversal rk != 2" << endl;
1694 cout <<
"rk= " << rk << endl;
1697 if (f_normalize_from_the_left) {
1698 cout <<
"geometry_global::do_transversal normalizing from the left" << endl;
1699 for (i = 2; i < 4; i++) {
1704 cout <<
"geometry_global::do_transversal after normalize from the left:" << endl;
1706 cout <<
"rk=" << rk << endl;
1710 if (f_normalize_from_the_right) {
1711 cout <<
"geometry_global::do_transversal normalizing from the right" << endl;
1712 for (i = 2; i < 4; i++) {
1717 cout <<
"geometry_global::do_transversal after normalize from the right:" << endl;
1719 cout <<
"rk=" << rk << endl;
1731 cout <<
"geometry_global::do_transversal done" << endl;
1742 int f_v = (verbose_level >= 1);
1746 cout <<
"geometry_global::do_cheat_sheet_PG verbose_level="
1747 << verbose_level << endl;
1756 cout <<
"geometry_global::do_cheat_sheet_PG before P->init" << endl;
1762 cout <<
"geometry_global::do_cheat_sheet_PG after P->init" << endl;
1766 cout <<
"geometry_global::do_cheat_sheet_PG before P->create_latex_report" << endl;
1770 cout <<
"geometry_global::do_cheat_sheet_PG after P->create_latex_report" << endl;
1778 cout <<
"geometry_global::do_cheat_sheet_PG done" << endl;
1787 int f_v = (verbose_level >= 1);
1791 cout <<
"geometry_global::do_cheat_sheet_Gr verbose_level="
1792 << verbose_level << endl;
1801 cout <<
"geometry_global::do_cheat_sheet_Gr before P->init" << endl;
1807 cout <<
"geometry_global::do_cheat_sheet_Gr after P->init" << endl;
1811 cout <<
"geometry_global::do_cheat_sheet_Gr before P->create_latex_report_for_Grassmannian" << endl;
1815 cout <<
"geometry_global::do_cheat_sheet_Gr after P->create_latex_report_for_Grassmannian" << endl;
1823 cout <<
"geometry_global::do_cheat_sheet_PG done" << endl;
1830 int projective_dimension,
1833 int f_v = (verbose_level >= 1);
1837 cout <<
"geometry_global::do_cheat_sheet_hermitian verbose_level="
1838 << verbose_level << endl;
1846 cout <<
"geometry_global::do_cheat_sheet_hermitian before H->init" << endl;
1848 H->
init(F, projective_dimension + 1, verbose_level - 2);
1850 cout <<
"geometry_global::do_cheat_sheet_hermitian after H->init" << endl;
1854 cout <<
"geometry_global::do_cheat_sheet_hermitian before H->create_latex_report" << endl;
1858 cout <<
"geometry_global::do_cheat_sheet_hermitian after H->create_latex_report" << endl;
1866 cout <<
"geometry_global::do_cheat_sheet_hermitian done" << endl;
1876 int f_v = (verbose_level >= 1);
1880 cout <<
"geometry_global::do_create_desarguesian_spread" << endl;
1881 cout <<
"geometry_global::do_create_desarguesian_spread Q=" << FQ->
q <<
" q=" << Fq->
q <<
" m=" << m << endl;
1886 if (FQ->
p != Fq->
p) {
1887 cout <<
"geometry_global::do_create_desarguesian_spread the fields must have the same characteristic" << endl;
1892 if (s * Fq->
e != FQ->
e) {
1893 cout <<
"geometry_global::do_create_desarguesian_spread Fq is not a subfield of FQ" << endl;
1903 cout <<
"geometry_global::do_create_desarguesian_spread before SubS->init" << endl;
1905 SubS->
init(FQ, Fq, verbose_level - 2);
1908 cout <<
"Field-basis: ";
1915 cout <<
"geometry_global::do_create_desarguesian_spread before D->init" << endl;
1921 cout <<
"geometry_global::do_create_desarguesian_spread after D->init" << endl;
1931 cout <<
"geometry_global::do_create_desarguesian_spread done" << endl;
1937 long int *points,
int nb_points,
1938 long int *lines,
int nb_lines,
1941 int f_v = (verbose_level >= 1);
1944 cout <<
"geometry_global::create_decomposition_of_projective_plane" << endl;
1949 int depth = INT_MAX;
1963 the_points =
NEW_int(nb_points);
1964 the_lines =
NEW_int(nb_lines);
1966 for (i = 0; i < nb_points; i++) {
1967 the_points[i] = points[i];
1969 for (i = 0; i < nb_lines; i++) {
1970 the_lines[i] = lines[i];
1974 the_points, nb_points,
TRUE , verbose_level);
1977 the_lines, nb_lines,
TRUE , verbose_level);
1984 cout <<
"geometry_global::create_decomposition_of_projective_plane before I->compute_TDO_safe" << endl;
1988 cout <<
"geometry_global::create_decomposition_of_projective_plane after I->compute_TDO_safe" << endl;
2001 string fname_row_scheme;
2002 string fname_col_scheme;
2005 fname_row_scheme.assign(fname_base);
2006 fname_row_scheme.append(
"_row_scheme.tex");
2007 fname_col_scheme.assign(fname_base);
2008 fname_col_scheme.append(
"_col_scheme.tex");
2010 ofstream fp_row_scheme(fname_row_scheme);
2011 ofstream fp_col_scheme(fname_col_scheme);
2013 fp_row_scheme,
FALSE ,
2016 fp_col_scheme,
FALSE ,
2025 cout <<
"geometry_global::create_decomposition_of_projective_plane done" << endl;
2034 std::string &equation_text,
2035 std::string &symbol_txt,
2036 std::string &symbol_tex,
2039 int f_v = (verbose_level >= 1);
2042 cout <<
"geometry_global::latex_homogeneous_equation" << endl;
2052 cout <<
"geometry_global::latex_homogeneous_equation before Poly->init" << endl;
2068 cout <<
"number of coefficients given = " << sz << endl;
2074 cout <<
"geometry_global::latex_homogeneous_equation done" << endl;
2080 int *v5,
int a,
int b,
int c,
int verbose_level)
2086 int f_v = (verbose_level >= 1);
2087 int v0, v1, v2, v3, v4;
2088 int half, four, quarter, minus_one;
2091 cout <<
"geometry_global::create_BLT_point" << endl;
2096 minus_one = F->
negate(1);
2098 cout <<
"geometry_global::create_BLT_point "
2099 "four=" << four << endl;
2100 cout <<
"geometry_global::create_BLT_point "
2101 "half=" << half << endl;
2102 cout <<
"geometry_global::create_BLT_point "
2103 "quarter=" << quarter << endl;
2104 cout <<
"geometry_global::create_BLT_point "
2105 "minus_one=" << minus_one << endl;
2108 v0 = F->
mult(minus_one, F->
mult(b, half));
2109 v1 = F->
mult(minus_one, c);
2111 v3 = F->
mult(minus_one, F->
add(
2116 cout <<
"geometry_global::create_BLT_point done" << endl;
2126 int f_v = (verbose_level >= 1);
2131 cout <<
"geometry_global::compute_eckardt_point_info" << endl;
2134 cout <<
"geometry_global::compute_eckardt_point_info "
2135 "P2->n != 2" << endl;
2146 E->
init(P2, arc6, verbose_level);
2149 cout <<
"geometry_global::compute_eckardt_point_info done" << endl;
2156 long int *S,
int len,
int pt,
int nb_E,
int verbose_level)
2158 int f_v = (verbose_level >= 1);
2163 cout <<
"geometry_global::test_nb_Eckardt_points" << endl;
2177 if (E->
nb_E != nb_E) {
2184 cout <<
"geometry_global::test_nb_Eckardt_points done" << endl;
2191 long int P1,
long int P2,
int partition_rk,
long int *arc,
2197 int f_v = (verbose_level >= 1);
2204 cout <<
"geometry_global::rearrange_arc_for_lifting" << endl;
2209 for (i = 0; i < 6; i++) {
2211 if (a == P1 || a == P2) {
2217 cout <<
"geometry_global::rearrange_arc_for_lifting "
2228 for (i = 0; i < 4; i++) {
2230 arc[2 + i] = pts[a];
2234 cout <<
"geometry_global::rearrange_arc_for_lifting done" << endl;
2240 long int P1,
long int P2,
long int &line1,
long int &line2,
2246 int f_v = (verbose_level >= 1);
2249 int Basis_search[16];
2250 int Basis_search_copy[16];
2256 cout <<
"geometry_global::find_two_lines_for_arc_lifting" << endl;
2259 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2260 "P->n != 3" << endl;
2268 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2269 "Basis[3] != 0, the point P1 does not lie "
2270 "in the hyperplane W = 0" << endl;
2274 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2275 "Basis[7] != 0, the point P2 does not lie "
2276 "in the hyperplane W = 0" << endl;
2290 for (i = 0; i < N; i++) {
2294 if (Basis_search[11] == 0) {
2304 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2305 "i == N, could not find line1" << endl;
2318 for (i = p0 + 1; i < N; i++) {
2323 if (Basis_search[15] == 0) {
2328 Basis_search_copy, 4, 4, base_cols);
2334 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2335 "i == N, could not find line2" << endl;
2341 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2342 "p0=" << p0 <<
" p1=" << p1 << endl;
2347 cout <<
"geometry_global::find_two_lines_for_arc_lifting " << endl;
2348 cout <<
"Basis:" << endl;
2356 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2363 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2364 "line1=" << line1 <<
" line2=" << line2 << endl;
2367 cout <<
"geometry_global::find_two_lines_for_arc_lifting "
2374 int *A3,
int f_semilinear,
int frobenius,
2375 long int line1,
long int line2,
2379 int f_v = (verbose_level >= 1);
2396 int tmp_basecols[4];
2404 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed" << endl;
2407 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2410 cout <<
"f_semilinear = " << f_semilinear
2411 <<
" frobenius=" << frobenius << endl;
2417 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2418 "input Line1:" << endl;
2420 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2421 "input Line2:" << endl;
2435 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2436 "modified Line1:" << endl;
2438 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2439 "modified Line2:" << endl;
2448 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2449 "P1 = first point on Line1:" << endl;
2451 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2452 "P2 = first point on Line2:" << endl;
2454 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2455 "x = second point on Line1:" << endl;
2457 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2458 "y = second point on Line2:" << endl;
2465 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2466 "P1 * A = " << endl;
2468 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2469 "P2 * A = " << endl;
2474 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2475 "applying frobenius" << endl;
2481 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2482 "P1 * A ^Phi^frobenius = " << endl;
2484 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2485 "P2 * A ^Phi^frobenius = " << endl;
2491 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2492 "normalized P1 * A = " << endl;
2494 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2495 "normalized P2 * A = " << endl;
2501 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2502 "We don't have a swap but A3 does not stabilize P2" << endl;
2509 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2510 "We have a swap but A3 does not map P2 to P1" << endl;
2515 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2516 "unable to determine if we have a swap or not." << endl;
2521 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2522 "f_swap=" << f_swap << endl;
2528 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2531 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2538 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2545 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2556 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2565 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2587 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2594 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2603 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2614 lambda, y, mu, Line2, m1, w, abgd, 3);
2618 lambda, x, mu, Line1, m1, w, abgd, 3);
2625 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2630 for (i = 0; i < 3; i++) {
2631 for (j = 0; j < 3; j++) {
2632 A4[i * 4 + j] = A3[i * 3 + j];
2639 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed "
2649 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_fixed done" << endl;
2655 long int line1_from,
long int line1_to,
2656 long int line2_from,
long int line2_to,
2660 int f_v = (verbose_level >= 1);
2677 int tmp_basecols[4];
2684 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved" << endl;
2691 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2692 "input Line1_from:" << endl;
2694 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2695 "input Line2_from:" << endl;
2709 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2710 "modified Line1_from:" << endl;
2712 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2713 "modified Line2_from:" << endl;
2722 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2723 "P1 = first point on Line1_from:" << endl;
2725 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2726 "P2 = first point on Line2_from:" << endl;
2728 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2729 "u = second point on Line1_from:" << endl;
2731 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2732 "v = second point on Line2_from:" << endl;
2744 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2745 "input Line1_to:" << endl;
2747 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2748 "input Line2_to:" << endl;
2762 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2763 "modified Line1_to:" << endl;
2765 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2766 "modified Line2_to:" << endl;
2775 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2776 "P1 = first point on Line1_to:" << endl;
2778 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2779 "P2 = first point on Line2_to:" << endl;
2781 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2782 "x = second point on Line1_to:" << endl;
2784 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2785 "y = second point on Line2_to:" << endl;
2793 cout <<
"Line1_from and Line1_to must intersect in W=0" << endl;
2799 cout <<
"Line2_from and Line2_to must intersect in W=0" << endl;
2807 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2819 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2826 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2833 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2840 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2841 "lambda=" << lambda <<
" mu=" << mu << endl;
2850 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2856 for (i = 0; i < 4; i++) {
2857 for (j = 0; j < 4; j++) {
2869 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved "
2878 cout <<
"geometry_global::hyperplane_lifting_with_two_lines_moved done" << endl;
2885 long int *set2,
int sz2,
long int *set4,
int &sz4,
int verbose_level)
2888 int f_v = (verbose_level >= 1);
2889 int f_vv = (verbose_level >= 2);
2893 int *v, *w1, *w2, *w3, *v2;
2896 int *pair_embedding;
2897 int i, h, k, a, a0, a1, b, b0, b1, e, alpha;
2900 cout <<
"geometry_global::andre_preimage" << endl;
2906 cout <<
"alpha=" << alpha << endl;
2921 cout <<
"geometry_global::andre_preimage e=" << e << endl;
2925 components, embedding, pair_embedding, verbose_level - 3);
2943 components, embedding, pair_embedding);
2948 for (i = 0; i < sz2; i++) {
2950 cout <<
"geometry_global::andre_preimage "
2951 "input point " << i <<
" : ";
2957 cout <<
" becomes ";
2980 for (h = 0; h < 2; h++) {
2982 a0 = components[a * 2 + 0];
2983 a1 = components[a * 2 + 1];
2984 b = FQ->
mult(a, alpha);
2985 b0 = components[b * 2 + 0];
2986 b1 = components[b * 2 + 1];
3006 for (h = 0; h < q + 1; h++) {
3013 for (k = 0; k < 4; k++) {
3014 w3[k] = Fq->
add(Fq->
mult(v2[0], w1[k]),
3015 Fq->
mult(v2[1], w2[k]));
3024 cout <<
" rank " << a << endl;
3036 for (h = 0; h < 2; h++) {
3038 a0 = components[a * 2 + 0];
3039 a1 = components[a * 2 + 1];
3050 cout <<
" rank " << a << endl;
3056 cout <<
"geometry_global::andre_preimage "
3057 "we found " << sz4 <<
" points:" << endl;
3061 for (i = 0; i < sz4; i++) {
3062 cout << set4[i] <<
" ";
3072 cout <<
"geometry_global::andre_preimage done" << endl;
information about the Eckardt points of a surface derived from a six-arc
void init(geometry::projective_space *P2, long int *arc6, int verbose_level)
a collection of combinatorial functions
int first_k_subset(int *set, int n, int k)
int next_k_subset(int *set, int n, int k)
void set_partition_4_into_2_unrank(int rk, int *v)
void init5(int *v, int a0, int a1, int a2, int a3, int a4)
void set_print(std::ostream &ost, int *v, int len)
data structure for set partitions following Jeffrey Leon
void subset_continguous(int from, int len)
void split_cell(int verbose_level)
void split_cell_front_or_back(int *set, int set_size, int f_front, int verbose_level)
void split_line_cell_front_or_back(int *set, int set_size, int f_front, int verbose_level)
void allocate(int n, int verbose_level)
a collection of functions related to sorted vectors
void int_vec_heapsort(int *v, int len)
int int_vec_compare(int *p, int *q, int len)
void PG_element_normalize_from_front(int *v, int stride, int len)
void print_matrix_latex(std::ostream &ost, int *A, int m, int n)
void PG_element_normalize(int *v, int stride, int len)
void PG_element_unrank_modified(int *v, int stride, int len, int a)
void display_all_PG_elements(int n)
void finite_field_init(int q, int f_without_tables, int verbose_level)
void init_override_polynomial(int q, std::string &poly, int f_without_tables, int verbose_level)
void subfield_embedding_2dimensional(finite_field &subfield, int *&components, int *&embedding, int *&pair_embedding, int verbose_level)
linear_algebra::linear_algebra * Linear_algebra
void print_embedding(finite_field &subfield, int *components, int *embedding, int *pair_embedding)
void display_all_PG_elements_not_in_subspace(int n, int m)
void PG_element_rank_modified_lint(int *v, int stride, int len, long int &a)
a finite field as a vector space over a subfield
void init(finite_field *FQ, finite_field *Fq, int verbose_level)
void init_ovoid_Uab_even(int a, int b, int verbose_level)
void get_name(std::string &name)
void init(field_theory::finite_field *Fq, field_theory::finite_field *FQ, int f_Uab, int a, int b, int f_classical, int verbose_level)
void init_ovoid(int verbose_level)
void create_unital(int verbose_level)
void init(int n, int m, int s, field_theory::subfield_structure *SubS, int verbose_level)
void create_latex_report(int verbose_level)
various functions related to geometries
void do_create_desarguesian_spread(field_theory::finite_field *FQ, field_theory::finite_field *Fq, int m, int verbose_level)
void create_BLT_point(field_theory::finite_field *F, int *v5, int a, int b, int c, int verbose_level)
int & TDO_upper_bound_source(int i, int j)
void hyperplane_lifting_with_two_lines_moved(projective_space *P, long int line1_from, long int line1_to, long int line2_from, long int line2_to, int *A4, int verbose_level)
int test_nb_Eckardt_points(projective_space *P2, long int *S, int len, int pt, int nb_E, int verbose_level)
void maxfit_table_init(int v_max)
void do_cheat_sheet_hermitian(field_theory::finite_field *F, int projective_dimension, int verbose_level)
void AG_element_unrank(int q, int *v, int stride, int len, long int a)
void create_Fisher_BLT_set(long int *Fisher_BLT, int *ABC, field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
void test_PG(int n, int q)
void do_transversal(field_theory::finite_field *F, std::string &line_1_basis, std::string &line_2_basis, std::string &point, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
int & TDO_upper_bound(int i, int j)
long int count_S(int n, int q)
void latex_homogeneous_equation(field_theory::finite_field *F, int degree, int nb_vars, std::string &equation_text, std::string &symbol_txt, std::string &symbol_tex, int verbose_level)
int test_if_arc(field_theory::finite_field *Fq, int *pt_coords, int *set, int set_sz, int k, int verbose_level)
int Witt_index(int epsilon, int k)
algebraic_geometry::eckardt_point_info * compute_eckardt_point_info(projective_space *P2, long int *arc6, int verbose_level)
long int nb_pts_S(int n, int q)
long int nb_pts_Qplus(int k, int q)
long int nb_PG_elements(int n, int q)
int braun_test_single_type(int v, int k, int ak)
int dimension_given_Witt_index(int epsilon, int n)
void do_intersection_of_two_lines(field_theory::finite_field *F, std::string &line_1_basis, std::string &line_2_basis, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
void AG_element_rank_longinteger(int q, int *v, int stride, int len, ring_theory::longinteger_object &a)
int braun_test_upper_bound(int v, int k)
long int count_T2(int n, int q)
long int nb_AG_elements(int n, int q)
void do_inverse_isomorphism_klein_quadric(field_theory::finite_field *F, std::string &inverse_isomorphism_klein_quadric_matrix_A6, int verbose_level)
void andre_preimage(projective_space *P2, projective_space *P4, long int *set2, int sz2, long int *set4, int &sz4, int verbose_level)
int PG_element_modified_is_in_subspace(int n, int m, int *v)
void test_orthogonal(int n, int q)
int & TDO_upper_bound_internal(int i, int j)
void find_two_lines_for_arc_lifting(projective_space *P, long int P1, long int P2, long int &line1, long int &line2, int verbose_level)
void AG_element_unrank_longinteger(int q, int *v, int stride, int len, ring_theory::longinteger_object &a)
long int count_Sbar(int n, int q)
void add_term(int n, field_theory::finite_field &F, int &nb_terms, int *form_i, int *form_j, int *form_coeff, int *Gram, int i, int j, int coeff)
void maxfit_table_compute()
void print_quadratic_form_list_coded(int form_nb_terms, int *form_i, int *form_j, int *form_coeff)
void test_Orthogonal(int epsilon, int k, int q)
long int nb_pts_Sbar(int n, int q)
int & maxfit_internal(int i, int j)
void create_decomposition_of_projective_plane(std::string &fname_base, projective_space *P, long int *points, int nb_points, long int *lines, int nb_lines, int verbose_level)
long int nb_pts_N1(int n, int q)
void do_rank_points_in_PG(field_theory::finite_field *F, std::string &label, int verbose_level)
long int nb_pts_N(int n, int q)
long int nb_pts_Q(int k, int q)
long int nb_PG_elements_not_in_subspace(int n, int m, int q)
long int nb_pts_Qminus(int k, int q)
int & maxfit(int i, int j)
void rearrange_arc_for_lifting(long int *Arc6, long int P1, long int P2, int partition_rk, long int *arc, int verbose_level)
void TDO_refine_extend_upper_bounds(int new_v_max)
int AG_element_next(int q, int *v, int stride, int len)
void do_cheat_sheet_Gr(field_theory::finite_field *F, int n, int k, int verbose_level)
void do_cheat_sheet_PG(field_theory::finite_field *F, graphics::layered_graph_draw_options *O, int n, int verbose_level)
long int nb_pts_Qepsilon(int epsilon, int k, int q)
int braun_test_on_line_type(int v, int *type)
long int count_N1(int n, int q)
void maxfit_table_reallocate(int v_max)
void create_Mondello_BLT_set(long int *BLT, int *ABC, field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
long int count_T1(int epsilon, int n, int q)
void make_Gram_matrix_from_list_coded_quadratic_form(int n, field_theory::finite_field &F, int nb_terms, int *form_i, int *form_j, int *form_coeff, int *Gram)
long int AG_element_rank(int q, int *v, int stride, int len)
long int nb_affine_lines(int n, int q)
void TDO_refine_init_upper_bounds(int v_max)
void create_Linear_BLT_set(long int *BLT, int *ABC, field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
void hyperplane_lifting_with_two_lines_fixed(projective_space *P, int *A3, int f_semilinear, int frobenius, long int line1, long int line2, int *A4, int verbose_level)
void create_Buekenhout_Metz(field_theory::finite_field *Fq, field_theory::finite_field *FQ, int f_classical, int f_Uab, int parameter_a, int parameter_b, std::string &fname, int &nb_pts, long int *&Pts, int verbose_level)
int packing_number_via_maxfit(int n, int k)
long int nb_pts_Nbar(int n, int q)
void init(field_theory::finite_field *F, int nb_vars, int verbose_level)
void create_latex_report(int verbose_level)
interface for various incidence geometries
void get_and_print_row_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void init_projective_space(projective_space *P, int verbose_level)
void get_and_print_column_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void compute_TDO_safe(data_structures::partitionstack &PStack, int depth, int verbose_level)
the Klein correspondence between lines in PG(3,q) and points on the Klein quadric
void init(field_theory::finite_field *F, orthogonal_geometry::orthogonal *O, int verbose_level)
void reverse_isomorphism(int *A6, int *A4, int verbose_level)
projective space PG(n,q) of dimension n over Fq
void conic_points(long int *five_pts, int *six_coeffs, long int *points, int &nb_points, int verbose_level)
int determine_conic_in_plane(long int *input_pts, int nb_pts, int *six_coeffs, int verbose_level)
long int rank_line(int *basis)
void create_latex_report_for_Grassmannian(int k, int verbose_level)
field_theory::finite_field * F
long int rank_point(int *v)
void print_set(long int *set, int set_size)
void projective_space_init(int n, field_theory::finite_field *F, int f_init_incidence_structure, int verbose_level)
void create_latex_report(graphics::layered_graph_draw_options *O, int verbose_level)
void unrank_point(int *v, long int rk)
void unrank_line(int *basis, long int rk)
options for drawing an object of type layered_graph
void mult_vector_from_the_left(int *v, int *A, int *vA, int m, int n)
void linear_combination_of_three_vectors(int a, int *A, int b, int *B, int c, int *C, int *D, int len)
void transpose_matrix(int *A, int *At, int ma, int na)
int Gauss_easy(int *A, int m, int n)
void mult_vector_from_the_right(int *A, int *v, int *Av, int m, int n)
void linear_combination_of_vectors(int a, int *A, int b, int *B, int *C, int len)
void invert_matrix_memory_given(int *A, int *A_inv, int n, int *tmp_A, int *tmp_basecols, int verbose_level)
void vector_frobenius_power_in_place(int *A, int m, int f)
int perp_standard(int n, int k, int *A, int verbose_level)
void negate_vector_in_place(int *A, int m)
void Gauss_step_make_pivot_one(int *v1, int *v2, int len, int idx, int verbose_level)
int Gauss_easy_memory_given(int *A, int m, int n, int *base_cols)
basic number theoretic functions
long int i_power_j_lint(long int i, long int j)
data_structures::int_vec * Int_vec
void get_matrix_from_label(std::string &label, int *&v, int &m, int &n)
an orthogonal geometry O^epsilon(n,q)
void init(int epsilon, int n, field_theory::finite_field *F, int verbose_level)
Penttila's unusual model to create BLT-sets.
void create_Mondello_BLT_set(long int *BLT, int *ABC, int verbose_level)
void create_Linear_BLT_set(long int *BLT, int *ABC, int verbose_level)
void setup(field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
void create_Fisher_BLT_set(long int *Fisher_BLT, int *ABC, int verbose_level)
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)
void remake_symbols(int symbol_offset, const char *symbol_mask, const char *symbol_mask_latex, int verbose_level)
void print_equation_tex(std::ostream &ost, int *coeffs)
domain to compute with objects of type longinteger
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)
a class to represent arbitrary precision integers
void assign_to(longinteger_object &b)
void create(long int i, const char *file, int line)
void swap_with(longinteger_object &b)
#define Lint_vec_copy(A, B, C)
#define Int_vec_scan(A, B, C)
#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