19namespace layer3_group_actions {
70 int verbose_level = 0;
71 int f_v = (verbose_level >= 1);
74 cout <<
"matrix_group::~matrix_group calling free_data" << endl;
78 cout <<
"matrix_group::~matrix_group "
79 "destroying Elts" << endl;
85 cout <<
"matrix_group::~matrix_group "
86 "destroying GFq" << endl;
95 cout <<
"matrix_group::~matrix_group done" << endl;
104 int f_v = (verbose_level >= 1);
105 int f_vv = (verbose_level >= 2);
110 cout <<
"matrix_group::init_projective_group" << endl;
111 cout <<
"n=" <<
n << endl;
112 cout <<
"q=" << F->
q << endl;
114 cout <<
"verbose_level=" << verbose_level << endl;
135 sprintf(str1,
"PGGL_%d_%d",
n, F->
q);
136 sprintf(str2,
"{\\rm P}\\Gamma {\\rm L}(%d,%d)",
n, F->
q);
139 sprintf(str1,
"PGL_%d_%d",
n, F->
q);
140 sprintf(str2,
"{\\rm PGL}(%d,%d)",
n, F->
q);
147 cout <<
"matrix_group::init_projective_group "
148 "before compute_elt_size" << endl;
152 cout <<
"matrix_group::init_projective_group "
153 "after compute_elt_size" << endl;
157 cout <<
"matrix_group::init_projective_group "
162 cout <<
"matrix_group::init_projective_group "
163 "before allocate_data" << endl;
167 cout <<
"matrix_group::init_projective_group "
168 "after allocate_data" << endl;
172 cout <<
"matrix_group::init_projective_group "
173 "before setup_page_storage" << endl;
177 cout <<
"matrix_group::init_projective_group "
178 "after setup_page_storage" << endl;
185 cout <<
"matrix_group::init_projective_group "
186 "before init_base" << endl;
190 cout <<
"matrix_group::init_projective_group "
191 "after init_base" << endl;
199 cout <<
"matrix_group::init_projective_group "
209 int f_v = (verbose_level >= 1);
210 int f_vv = (verbose_level >= 2);
215 cout <<
"matrix_group::init_affine_group" << endl;
236 sprintf(str1,
"AGGL_%d_%d",
n, F->
q);
237 sprintf(str2,
"{\\rm A}\\Gamma {\\rm L}(%d,%d)",
n, F->
q);
240 sprintf(str1,
"AGL_%d_%d",
n, F->
q);
241 sprintf(str2,
"{\\rm AGL}(%d,%d)",
n, F->
q);
250 cout <<
"matrix_group::init_affine_group "
262 cout <<
"matrix_group::init_affine_group "
263 "before init_base" << endl;
267 cout <<
"matrix_group::init_affine_group "
268 "after init_base" << endl;
275 cout <<
"matrix_group::init_affine_group "
285 int f_v = (verbose_level >= 1);
286 int f_vv = (verbose_level >= 2);
291 cout <<
"matrix_group::init_general_linear_group" << endl;
312 sprintf(str1,
"GGL_%d_%d",
n, F->
q);
313 sprintf(str2,
"\\Gamma {\\rm L}(%d,%d)",
n, F->
q);
316 sprintf(str1,
"GL_%d_%d",
n, F->
q);
317 sprintf(str2,
"{\\rm GL}(%d,%d)",
n, F->
q);
326 cout <<
"matrix_group::init_general_linear_group "
338 cout <<
"matrix_group::init_general_linear_group "
339 "before init_base" << endl;
343 cout <<
"matrix_group::init_general_linear_group "
344 "after init_base" << endl;
351 cout <<
"matrix_group::init_general_linear_group "
358 int f_v = (verbose_level >= 1);
361 cout <<
"matrix_group::allocate_data" << endl;
364 cout <<
"matrix_group::allocate_data elt_size_int == 0" << endl;
383 cout <<
"matrix_group::allocate_data done" << endl;
389 int f_v = (verbose_level >= 1);
392 cout <<
"matrix_group::free_data" << endl;
396 cout <<
"matrix_group::free_data freeing Elt1" << endl;
402 cout <<
"matrix_group::free_data freeing Elt2" << endl;
408 cout <<
"matrix_group::free_data freeing Elt3" << endl;
414 cout <<
"matrix_group::free_data freeing Elt4" << endl;
420 cout <<
"matrix_group::free_data freeing Elt5" << endl;
426 cout <<
"matrix_group::free_data freeing tmp_M" << endl;
431 cout <<
"matrix_group::free_data destroying v1-3" << endl;
443 cout <<
"matrix_group::free_data "
444 "destroying elt1-3" << endl;
456 cout <<
"matrix_group::free_data "
457 "destroying base_cols" << endl;
464 cout <<
"matrix_group::free_data done" << endl;
469 int page_length_log,
int verbose_level)
471 int f_v = (verbose_level >= 1);
472 int f_vv = (verbose_level >= 2);
476 cout <<
"matrix_group::setup_page_storage" << endl;
479 cout <<
"matrix_group::setup_page_storage "
480 "Warning: Elts != NULL" << endl;
486 cout <<
"matrix_group::setup_page_storage "
487 "calling Elts->init()" << endl;
490 page_length_log, verbose_level - 2);
495 cout <<
"matrix_group::setup_page_storage before GL_one" << endl;
500 cout <<
"matrix_group::setup_page_storage before Elts->store" << endl;
504 cout <<
"identity element stored, hdl = " << hdl << endl;
507 cout <<
"matrix_group::setup_page_storage done" << endl;
514 int f_v = (verbose_level >= 1);
515 int f_vv = (verbose_level >= 2);
519 cout <<
"matrix_group::compute_elt_size" << endl;
538 cout <<
"matrix_group::compute_elt_size group type unknown" << endl;
555 cout <<
"matrix_group::compute_elt_size group type unknown" << endl;
574 cout <<
"matrix_group::compute_elt_size done" << endl;
580 int f_v = (verbose_level >= 1);
581 int f_vv = (verbose_level >= 2);
584 cout <<
"matrix_group::init_base" << endl;
588 cout <<
"matrix_group::init_base "
589 "before init_base_projective" << endl;
593 cout <<
"matrix_group::init_base "
594 "after init_base_projective" << endl;
599 cout <<
"matrix_group::init_base "
600 "before init_base_affine" << endl;
604 cout <<
"matrix_group::init_base "
605 "after init_base_affine" << endl;
610 cout <<
"matrix_group::init_base "
611 "before init_base_general_linear" << endl;
615 cout <<
"matrix_group::init_base "
616 "after init_base_general_linear" << endl;
620 cout <<
"matrix_group::init_base "
621 "group type unknown" << endl;
625 cout <<
"matrix_group::init_base done" << endl;
633 int f_v = (verbose_level >= 1);
634 int f_vv = (verbose_level >= 2);
640 cout <<
"matrix_group::init_base_projective "
641 "verbose_level=" << verbose_level << endl;
645 cout <<
"matrix_group::init_base_projective "
646 "degree=" <<
degree << endl;
649 cout <<
"matrix_group::init_base_projective "
650 "before GG.matrix_group_base_len_projective_group" << endl;
655 cout <<
"matrix_group::init_base_projective "
656 "after GG.matrix_group_base_len_projective_group" << endl;
664 cout <<
"matrix_group::init_base_projective "
665 "A->base_len()=" << A->
base_len() << endl;
669 cout <<
"matrix_group::init_base_projective "
670 "before init_projective_matrix_group" << endl;
678 GFq->projective_matrix_group_base_and_orbits(
n,
686 cout <<
"matrix_group::init_base_projective "
687 "after init_projective_matrix_group" << endl;
691 cout <<
"matrix_group::init_base_projective: finished" << endl;
698 int f_v = (verbose_level >= 1);
699 int f_vv = (verbose_level >= 1);
705 cout <<
"matrix_group::init_base_affine "
706 "verbose_level=" << verbose_level << endl;
710 cout <<
"matrix_group::init_base_affine degree="
716 cout <<
"matrix_group::init_base_affine base_len="
726 cout <<
"matrix_group::init_base_affine before "
727 "init_affine_matrix_group" << endl;
734 GFq->affine_matrix_group_base_and_transversal_length(
n,
741 cout <<
"matrix_group::init_base_affine after "
742 "init_affine_matrix_group" << endl;
746 cout <<
"matrix_group::init_base_affine: finished" << endl;
754 int f_v = (verbose_level >= 1);
755 int f_vv = (verbose_level >= 1);
761 cout <<
"matrix_group::init_base_general_linear "
762 "verbose_level=" << verbose_level << endl;
766 cout <<
"matrix_group::init_base_general_linear "
767 "degree=" <<
degree << endl;
773 cout <<
"matrix_group::init_base_general_linear "
783 cout <<
"matrix_group::init_base_general_linear before "
784 "init_linear_matrix_group" << endl;
791 GFq->general_linear_matrix_group_base_and_transversal_length(
n,
798 cout <<
"matrix_group::init_base_general_linear after "
799 "init_linear_matrix_group" << endl;
803 cout <<
"matrix_group::init_base_affine: finished" << endl;
809 int f_v = (verbose_level >= 1);
812 cout <<
"matrix_group::init_gl_classes" << endl;
815 cout <<
"matrix_group::init_gl_classes GFq == NULL" << endl;
821 cout <<
"matrix_group::init_gl_classes "
822 "before init gl_classes n = "
823 <<
n <<
" before NEW_OBJECT gl_classes" << endl;
827 cout <<
"matrix_group::init_gl_classes "
828 "after NEW_OBJECT gl_classes" << endl;
832 cout <<
"matrix_group::init_gl_classes "
833 "after init gl_classes" << endl;
837 cout <<
"matrix_group::init_gl_classes the field "
838 "is not a prime field" << endl;
842 cout <<
"matrix_group::init_gl_classes done" << endl;
850 return Elt[i *
n + j];
856 cout <<
"matrix_group::GL_element_entry_frobenius "
857 "fatal: !f_semilinear" << endl;
864 return Elt[
n *
n +
n];
870 cout <<
"matrix_group::GL_element_entry_frobenius "
871 "unknown group type" << endl;
878 int f_v = (verbose_level >= 1);
882 cout <<
"matrix_group::image_of_element" << endl;
894 cout <<
"matrix_group::image_of_element "
895 "unknown group type" << endl;
899 cout <<
"matrix_group::image_of_element " << a
900 <<
" maps to " << b << endl;
907 int *Elt,
long int a,
int verbose_level)
909 int f_v = (verbose_level >= 1);
913 cout <<
"matrix_group::GL_image_of_PG_element" << endl;
922 cout <<
"matrix_group::GL_image_of_PG_element done" << endl;
928 int *Elt,
long int a,
int verbose_level)
930 int f_v = (verbose_level >= 1);
935 cout <<
"matrix_group::GL_image_of_AG_element" << endl;
945 cout <<
"matrix_group::GL_image_of_AG_element done" << endl;
951 int *v,
int *A,
int *vA,
int verbose_level)
953 int f_v = (verbose_level >= 1);
956 cout <<
"matrix_group::action_from_the_right_all_types" << endl;
970 A, vA, verbose_level - 1);
973 cout <<
"matrix_group::action_from_the_right_"
974 "all_types unknown group type" << endl;
978 cout <<
"matrix_group::action_from_the_right_all_types done" << endl;
983 int *v,
int *A,
int *vA,
int verbose_level)
987 int f_v = (verbose_level >= 1);
990 cout <<
"matrix_group::projective_action_from_the_right" << endl;
993 v, A, vA,
n, verbose_level - 1);
995 cout <<
"matrix_group::projective_action_from_the_right done" << endl;
1000 int *v,
int *A,
int *vA,
int verbose_level)
1004 int f_v = (verbose_level >= 1);
1007 cout <<
"matrix_group::general_linear_action_from_the_right" << endl;
1010 v, A, vA,
n, verbose_level - 1);
1012 cout <<
"matrix_group::general_linear_action_from_the_right done" << endl;
1022 int f_v = (verbose_level >= 1);
1025 cout <<
"matrix_group::substitute_surface_equation" << endl;
1054 cout <<
"matrix_group::substitute_surface_equation done" << endl;
1076 for (i = 0; i <
n; i++) {
1118 cout <<
"matrix_group::GL_zero unknown group type" << endl;
1135 if (Elt[
n *
n] != 0) {
1154 if (Elt[
n *
n +
n] != 0) {
1168 if (Elt[
n *
n] != 0) {
1174 cout <<
"matrix_group::GL_is_one unknown group type" << endl;
1182 int f_v = (verbose_level >= 1);
1185 cout <<
"matrix_group::GL_mult" << endl;
1186 cout <<
"verbose_level=" << verbose_level << endl;
1187 cout <<
"A=" << endl;
1189 cout <<
"B=" << endl;
1193 cout <<
"matrix_group::GL_mult_verbose "
1194 "before GL_mult_internal (1)" << endl;
1198 cout <<
"matrix_group::GL_mult_verbose "
1199 "before GL_mult_internal (2)" << endl;
1205 cout <<
"AB=" << endl;
1207 cout <<
"matrix_group::GL_mult done" << endl;
1212 int *A,
int *B,
int *AB,
int verbose_level)
1214 int f_v = (verbose_level >= 1);
1217 cout <<
"matrix_group::GL_mult_internal" << endl;
1219 cout <<
"f_affine=" <<
f_affine << endl;
1227 cout <<
"matrix_group::GL_mult_internal "
1228 "before GFq->semilinear_matrix_mult" << endl;
1235 cout <<
"matrix_group::GL_mult_internal "
1236 "before GFq->mult_matrix_matrix" << endl;
1245 cout <<
"matrix_group::GL_mult_internal "
1246 "before GFq->semilinear_matrix_mult_affine" << endl;
1252 cout <<
"matrix_group::GL_mult_internal "
1253 "before GFq->matrix_mult_affine" << endl;
1261 cout <<
"matrix_group::GL_mult_internal "
1262 "before GFq->semilinear_matrix_mult" << endl;
1269 cout <<
"matrix_group::GL_mult_internal "
1270 "before GFq->mult_matrix_matrix" << endl;
1277 cout <<
"matrix_group::GL_mult_internal unknown group type" << endl;
1281 cout <<
"matrix_group::GL_mult_internal done" << endl;
1297 int f_v = (verbose_level >= 1);
1300 cout <<
"matrix_group::GL_transpose" << endl;
1307 cout <<
"matrix_group::GL_transpose done" << endl;
1312 int *A,
int *At,
int verbose_level)
1314 int f_v = (verbose_level >= 1);
1317 cout <<
"matrix_group::GL_transpose_internal" << endl;
1320 cout <<
"matrix_group::GL_transpose_internal "
1321 "not yet implemented for affine groups" << endl;
1328 At[
n *
n] = A[
n *
n];
1331 cout <<
"matrix_group::GL_transpose_internal done" << endl;
1343 int f_v = (verbose_level >= 1);
1344 int f_vv = (verbose_level >= 2);
1347 cout <<
"matrix_group::GL_invert_internal" << endl;
1352 cout <<
"matrix_group::GL_invert_internal "
1353 "calling GFq->semilinear_matrix_invert" << endl;
1360 cout <<
"matrix_group::GL_invert_internal "
1361 "calling GFq->matrix_invert" << endl;
1370 cout <<
"matrix_group::semilinear_matrix_invert_affine "
1371 "calling GFq->semilinear_matrix_invert" << endl;
1378 cout <<
"matrix_group::matrix_invert_affine "
1379 "calling GFq->semilinear_matrix_invert" << endl;
1388 cout <<
"matrix_group::GL_invert_internal "
1389 "calling GFq->semilinear_matrix_invert" << endl;
1396 cout <<
"matrix_group::GL_invert_internal "
1397 "calling GFq->matrix_invert" << endl;
1404 cout <<
"matrix_group::GL_invert_internal "
1405 "unknown group type" << endl;
1409 cout <<
"matrix_group::GL_invert_internal done" << endl;
1415 int f_v = (verbose_level >= 1);
1416 int f_vv = (verbose_level >= 2);
1420 cout <<
"matrix_group::GL_unpack" << endl;
1421 cout <<
"matrix_group::GL_unpack f_projective=" <<
f_projective << endl;
1422 cout <<
"matrix_group::GL_unpack f_affine=" <<
f_affine << endl;
1423 cout <<
"matrix_group::GL_unpack f_general_linear=" <<
f_general_linear << endl;
1424 cout <<
"matrix_group::GL_unpack f_semilinear=" <<
f_semilinear << endl;
1425 cout <<
"matrix_group::GL_unpack n=" <<
n << endl;
1426 cout <<
"matrix_group::GL_unpack bits_per_digit=" <<
bits_per_digit << endl;
1427 cout <<
"matrix_group::GL_unpack bits_per_elt=" <<
bits_per_elt << endl;
1429 cout <<
"matrix_group::GL_unpack char_per_elt=" <<
char_per_elt << endl;
1441 for (i = 0; i <
n; i++) {
1455 cout <<
"matrix_group::GL_unpack unknown group type" << endl;
1459 cout <<
"GL_unpack read:" << endl;
1461 cout <<
"GL_unpack calling GL_invert_internal" << endl;
1465 cout <<
"matrix_group::GL_unpack done" << endl;
1481 for (i = 0; i <
n; i++) {
1495 cout <<
"matrix_group::GL_pack unknown group type" << endl;
1507 for (i = 0; i <
n; i++) {
1508 for (j = 0; j <
n; j++) {
1510 ost << setw(w) << a <<
" ";
1517 ost <<
", " << Elt[
n *
n +
n] << endl;
1522 ost <<
", " << Elt[
n *
n] << endl;
1544 int *Elt, ostream &ost)
1560 for (i = 0; i <
n; i++) {
1561 for (j = 0; j <
n; j++) {
1567 for (i = 0; i <
n; i++) {
1572 ost << Elt[
n *
n +
n] <<
",";
1577 ost << Elt[
n *
n] <<
",";
1586 int *Elt, ostream &ost)
1592 for (i = 0; i <
n; i++) {
1593 for (j = 0; j <
n; j++) {
1595 ost << setw(w) << a <<
" ";
1599 for (i = 0; i <
n; i++) {
1601 ost << setw(w) << a <<
" ";
1604 ost << Elt[
n *
n +
n] <<
" ";
1609 ost << Elt[
n *
n] <<
" ";
1621 cout <<
"matrix_group::GL_print_easy_normalized" << endl;
1630 for (i = 0; i <
n; i++) {
1631 for (j = 0; j <
n; j++) {
1633 ost << setw(w) << a <<
" ";
1640 for (i = 0; i <
n; i++) {
1641 for (j = 0; j <
n; j++) {
1643 ost << setw(w) << a <<
", ";
1648 ost <<
", " << Elt[
n *
n +
n] << endl;
1652 for (i = 0; i <
n; i++) {
1653 for (j = 0; j <
n; j++) {
1655 ost << setw(w) << a <<
", ";
1659 ost <<
", " << Elt[
n *
n] << endl;
1663 cout <<
"matrix_group::GL_print_easy_normalized "
1664 "unknown group type" << endl;
1669 cout <<
"matrix_group::GL_print_easy_normalized done" << endl;
1692 ost <<
"_{" << Elt[
n *
n +
n] <<
"}" << endl;
1697 ost <<
"_{" << Elt[
n *
n] <<
"}" << endl;
1705 void (*point_label)(std::stringstream &sstr,
int pt,
void *data),
1706 void *point_label_data)
1708 cout <<
"matrix_group::GL_print_latex_with_print_point_function nyi" << endl;
1718 int_vec_copy(Elt, D,
n *
n);
1724 ost <<
"\\left[" << endl;
1725 ost <<
"\\begin{array}{*{" <<
n <<
"}{r}}" << endl;
1726 for (i = 0; i <
n; i++) {
1727 for (j = 0; j <
n; j++) {
1731 if (is_prime(
GFq->
q)) {
1732 ost << setw(w) << a <<
" ";
1745 ost <<
"\\\\" << endl;
1747 ost <<
"\\end{array}" << endl;
1748 ost <<
"\\right]" << endl;
1750 int_vec_print(ost, Elt +
n *
n,
n);
1752 ost <<
"_{" << Elt[
n *
n +
n] <<
"}" << endl;
1757 ost <<
"_{" << Elt[
n *
n] <<
"}" << endl;
1792 ost <<
"\\left[" << endl;
1793 ost <<
"\\begin{array}{c}" << endl;
1794 for (i = 0; i <
n; i++) {
1795 for (j = 0; j <
n; j++) {
1806 if (is_prime(
GFq->
q)) {
1820 ost <<
"\\\\" << endl;
1822 ost <<
"\\end{array}" << endl;
1823 ost <<
"\\right]" << endl;
1826 ost <<
"\\left[" << endl;
1827 ost <<
"\\begin{array}{*{" <<
n <<
"}{r}}" << endl;
1828 for (i = 0; i <
n; i++) {
1829 for (j = 0; j <
n; j++) {
1840 if (is_prime(
GFq->
q)) {
1841 ost << setw(w) << a <<
" ";
1854 ost <<
"\\\\" << endl;
1856 ost <<
"\\end{array}" << endl;
1857 ost <<
"\\right]" << endl;
1862 ost <<
"_{" << Elt[
n *
n +
n] <<
"}" << endl;
1867 ost <<
"_{" << Elt[
n *
n] <<
"}" << endl;
1878 for (i = 0; i <
n; i++) {
1879 for (j = 0; j <
n; j++) {
1888 int h, h1, word, bit;
1895 mask = ((
uchar) 1) << bit;
1897 if (elt[word] & mask) {
1907 int h, h1, word, bit;
1920 mask = ((
uchar) 1) << bit;
1922 if (elt[word] & mask) {
1933 for (i = 0; i <
n; i++) {
1934 for (j = 0; j <
n; j++) {
1943 int h, h1, word, bit;
1953 mask = ((
uchar) 1) << bit;
1958 uchar not_mask = ~mask;
1959 elt[word] &= not_mask;
1968 int h, h1, word, bit;
1981 mask = ((
uchar) 1) << bit;
1986 uchar not_mask = ~mask;
1987 elt[word] &= not_mask;
1994 int *data,
int verbose_level)
1996 int f_v = (verbose_level >= 1);
1997 int f_vv = (verbose_level >= 2);
2001 cout <<
"matrix_group::make_element" << endl;
2018 cout <<
"matrix_group::make_element "
2019 "calling GL_invert_internal" << endl;
2023 cout <<
"matrix_group::make_element "
2024 "created the following element" << endl;
2029 cout <<
"matrix_group::make_element done" << endl;
2054 cout <<
"matrix_group::make_GL_element "
2055 "unknown group type" << endl;
2067 int f_semisimilarity,
2068 int *Elt,
int verbose_level)
2070 int f_v = (verbose_level >= 1);
2071 int f_vvv = (verbose_level >= 3);
2075 cout <<
"matrix_group::orthogonal_group_random_generator" << endl;
2076 cout <<
"f_siegel=" << f_siegel << endl;
2077 cout <<
"f_reflection=" << f_reflection << endl;
2078 cout <<
"f_similarity=" << f_similarity << endl;
2079 cout <<
"f_semisimilarity=" << f_semisimilarity << endl;
2080 cout <<
"n=" <<
n << endl;
2081 cout <<
"verbose_level = " << verbose_level << endl;
2087 cout <<
"matrix_group::orthogonal_group_random_generator "
2088 "before O->random_generator_for_orthogonal_group" << endl;
2097 Mtx, verbose_level - 1);
2100 cout <<
"matrix_group::orthogonal_group_random_generator "
2101 "after O->random_generator_for_orthogonal_group" << endl;
2102 cout <<
"Mtx=" << endl;
2112 cout <<
"matrix_group::orthogonal_group_random_generator "
2113 "random generator:" << endl;
2117 cout <<
"matrix_group::orthogonal_group_random_generator done" << endl;
2123 int *&Sol,
int &cnt,
int f_path_select,
int select_value,
2126 int f_v = (verbose_level >= 1);
2128 long int goi, rk, i, h;
2140 cout <<
"matrix_group::matrices_without_eigenvector_one "
2141 "testing group of order " << goi << endl;
2142 if (f_path_select) {
2143 cout <<
"path[0] = " << select_value << endl;
2153 for (i = 0; i <
n *
n; i++) {
2157 cout <<
"The negative Identity matrix is:" << endl;
2163 if (f_path_select) {
2164 S->
path[0] = select_value;
2165 for (h = 1; h < S->
A->
base_len(); h++) {
2175 if (f_path_select && S->
path[0] > select_value) {
2179 cout <<
"testing matrix " << rk <<
" / " << goi << endl;
2186 for (i = 0; i <
n; i++) {
2190 cout <<
"testing level " << i <<
" / " <<
n <<
":" << endl;
2194 (i + 1),
n, Mtx3, Mtx4, 0 ) < i + 1) {
2196 cout <<
"failing level " << i << endl;
2210 for (h = i + 1; h < S->
A->
base_len(); h++) {
2214 cout <<
"moving on to path ";
2220 cout <<
"moving on to matrix " << rk <<
" / " << goi << endl;
2228 if ((cnt % 10000) == 0) {
2231 d = (double) rk / (
double) goi * 100.;
2232 cout <<
"The matrix " << rk <<
" / " << goi
2233 <<
" (" << d <<
"%) has no eigenvector one, "
2234 "cnt=" << cnt << endl;
2239 for (
int t = 0; t < S->
A->
base_len(); t++) {
2243 if (f_path_select) {
2244 cout <<
" select_value = " << select_value;
2254 cout <<
"We found " << cnt <<
" matrices without "
2255 "eigenvector one" << endl;
2258 for (i = 0; i < cnt; i++) {
2268 cout <<
"matrix_group::matrices_without_eigenvector_one "
2269 "done, found this many matrices: " << cnt << endl;
2275 int *Elt1,
matrix_group *mtx1,
int f,
int verbose_level)
2277 int f_v = (verbose_level >= 1);
2282 cout <<
"matrix_group::matrix_minor" << endl;
2285 cout <<
"matrix_group::matrix_minor cannot be affine" << endl;
2295 cout <<
"matrix_group::matrix_minor done" << endl;
2301 int f_v = (verbose_level >= 1);
2307 cout <<
"matrix_group::base_len" << endl;
2325 cout <<
"matrix_group::base_len no type" << endl;
2329 cout <<
"matrix_group::base_len done" << endl;
2336 long int *base,
int *transversal_length,
2339 int f_v = (verbose_level >= 1);
2343 cout <<
"matrix_group::base_and_transversal_length" << endl;
2352 base, transversal_length,
2362 base, transversal_length,
2372 base, transversal_length,
2376 cout <<
"matrix_group::base_and_transversal_length done" << endl;
2381 int &size,
int &nb_gens,
int verbose_level)
2383 int f_v = (verbose_level >= 1);
2386 cout <<
"matrix_group::strong_generators_low_level" << endl;
2395 data, size, nb_gens,
2405 data, size, nb_gens,
2415 data, size, nb_gens,
2419 cout <<
"matrix_group::strong_generators_low_level done" << endl;
2427 a0 = Elt[0 *
n + 1];
2428 for (i = 0; i <
n - 1; i++) {
2429 for (j = 0; j <
n; j++) {
to list all conjugacy classes in GL(n,q)
void init(int k, field_theory::finite_field *F, int verbose_level)
generators for various classes of groups
void general_linear_matrix_group_base_and_transversal_length(int n, field_theory::finite_field *F, int f_semilinear, int base_len, int degree, long int *base, int *transversal_length, int verbose_level)
int matrix_group_base_len_projective_group(int n, int q, int f_semilinear, int verbose_level)
int matrix_group_base_len_general_linear_group(int n, int q, int f_semilinear, int verbose_level)
int matrix_group_base_len_affine_group(int n, int q, int f_semilinear, int verbose_level)
void strong_generators_for_affine_linear_group(int n, field_theory::finite_field *F, int f_semilinear, int *&data, int &size, int &nb_gens, int verbose_level)
void projective_matrix_group_base_and_transversal_length(int n, field_theory::finite_field *F, int f_semilinear, int base_len, int degree, long int *base, int *transversal_length, int verbose_level)
void affine_matrix_group_base_and_transversal_length(int n, field_theory::finite_field *F, int f_semilinear, int base_len, int degree, long int *base, int *transversal_length, int verbose_level)
void strong_generators_for_projective_linear_group(int n, field_theory::finite_field *F, int f_semilinear, int *&data, int &size, int &nb_gens, int verbose_level)
void strong_generators_for_general_linear_group(int n, field_theory::finite_field *F, int f_semilinear, int *&data, int &size, int &nb_gens, int verbose_level)
cubic surfaces in PG(3,q) with 27 lines
void substitute_semilinear(int *coeff_in, int *coeff_out, int f_semilinear, int frob, int *Mtx_inv, int verbose_level)
bulk storage of group elements in compressed form
long int store(uchar *elt)
void init(int entry_size, int page_length_log, int verbose_level)
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_lint(int *v, int stride, int len, long int a)
linear_algebra::linear_algebra * Linear_algebra
void print_element(std::ostream &ost, int a)
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)
long int nb_AG_elements(int n, int q)
long int AG_element_rank(int q, int *v, int stride, int len)
void semilinear_matrix_mult_affine(int *A, int *B, int *AB, int n)
void matrix_invert_affine(int *A, int *Tmp, int *Tmp_basecols, int *Ainv, int n, int verbose_level)
void general_linear_action_from_the_right(int f_semilinear, int *v, int *A, int *vA, int n, int verbose_level)
int rank_of_rectangular_matrix_memory_given(int *A, int m, int n, int *B, int *base_cols, int verbose_level)
void matrix_mult_affine(int *A, int *B, int *AB, int n, int verbose_level)
int is_zero_vector(int *A, int m)
int is_scalar_multiple_of_identity_matrix(int *A, int n, int &scalar)
int is_identity_matrix(int *A, int n)
void identity_matrix(int *A, int n)
void projective_action_from_the_right(int f_semilinear, int *v, int *A, int *vA, int n, int verbose_level)
void mult_matrix_matrix(int *A, int *B, int *C, int m, int n, int o, int verbose_level)
void transpose_matrix_in_place(int *A, int m)
void matrix_minor(int f_semilinear, int *A, int *B, int n, int f, int l)
void semilinear_matrix_mult_memory_given(int *A, int *B, int *AB, int *tmp_B, int n, int verbose_level)
void add_vector(int *A, int *B, int *C, int m)
void affine_action_from_the_right(int f_semilinear, int *v, int *A, int *vA, int n)
void semilinear_matrix_invert(int *A, int *Tmp, int *Tmp_basecols, int *Ainv, int n, int verbose_level)
void semilinear_matrix_invert_affine(int *A, int *Tmp, int *Tmp_basecols, int *Ainv, int n, int verbose_level)
void matrix_invert(int *A, int *Tmp, int *Tmp_basecols, int *Ainv, int n, int verbose_level)
basic number theoretic functions
long int int_negate(long int a, long int p)
an orthogonal geometry O^epsilon(n,q)
void random_generator_for_orthogonal_group(int f_action_is_semilinear, int f_siegel, int f_reflection, int f_similarity, int f_semisimilarity, int *Mtx, int verbose_level)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
stabilizer_chain_base_data * Stabilizer_chain
void make_element(int *Elt, int *data, int verbose_level)
the transversals in the stabilizer subgroup chain (Sims chain)
void init_affine_matrix_group(field_theory::finite_field *F, int n, int f_semilinear, int degree, int verbose_level)
void allocate_base_data(action *A, int base_len, int verbose_level)
void init_linear_matrix_group(field_theory::finite_field *F, int n, int f_semilinear, int degree, int verbose_level)
void init_projective_matrix_group(field_theory::finite_field *F, int n, int f_semilinear, int degree, int verbose_level)
a matrix group over a finite field in projective, vector space or affine action
void encode_frobenius(uchar *elt, int d)
void GL_print_easy_normalized(int *Elt, std::ostream &ost)
void init_gl_classes(int verbose_level)
void GL_print_easy(int *Elt, std::ostream &ost)
void GL_invert(int *A, int *Ainv)
void GL_code_for_make_element(int *Elt, int *data)
int bits_extension_degree
int f_kernel_is_diagonal_matrices
void init_affine_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
void GL_pack(int *Elt, uchar *elt)
void GL_print_for_make_element(int *Elt, std::ostream &ost)
void free_data(int verbose_level)
int GL_element_entry_frobenius(int *Elt)
int base_len(int verbose_level)
void init_base_projective(actions::action *A, int verbose_level)
void init_base_general_linear(actions::action *A, int verbose_level)
int decode_frobenius(uchar *elt)
void GL_mult_internal(int *A, int *B, int *AB, int verbose_level)
void allocate_data(int verbose_level)
void base_and_transversal_length(int base_len, long int *base, int *transversal_length, int verbose_level)
void put_digit(uchar *elt, int i, int j, int d)
void GL_invert_internal(int *A, int *Ainv, int verbose_level)
void init_base(actions::action *A, int verbose_level)
void GL_mult(int *A, int *B, int *AB, int verbose_level)
void decode_matrix(int *Elt, int n, uchar *elt)
int get_digit(uchar *elt, int i, int j)
void GL_print_for_make_element_no_commas(int *Elt, std::ostream &ost)
void compute_elt_size(int verbose_level)
void make_GL_element(int *Elt, int *A, int f)
long int GL_image_of_AG_element(int *Elt, long int a, int verbose_level)
void GL_copy_internal(int *A, int *B)
void make_element(int *Elt, int *data, int verbose_level)
void setup_page_storage(int page_length_log, int verbose_level)
void matrix_minor(int *Elt, int *Elt1, matrix_group *mtx1, int f, int verbose_level)
void GL_transpose_internal(int *A, int *At, int verbose_level)
void strong_generators_low_level(int *&data, int &size, int &nb_gens, int verbose_level)
void GL_print_easy_latex(int *Elt, std::ostream &ost)
void orthogonal_group_random_generator(actions::action *A, orthogonal_geometry::orthogonal *O, int f_siegel, int f_reflection, int f_similarity, int f_semisimilarity, int *Elt, int verbose_level)
void GL_print_latex(int *Elt, std::ostream &ost)
void GL_print_easy_latex_with_option_numerical(int *Elt, int f_numerical, std::ostream &ost)
void GL_copy(int *A, int *B)
void GL_unpack(uchar *elt, int *Elt, int verbose_level)
int has_shape_of_singer_cycle(int *Elt)
void GL_transpose(int *A, int *At, int verbose_level)
void encode_matrix(int *Elt, int n, uchar *elt)
void action_from_the_right_all_types(int *v, int *A, int *vA, int verbose_level)
void projective_action_from_the_right(int *v, int *A, int *vA, int verbose_level)
void init_projective_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
data_structures::page_storage * Elts
void GL_print_latex_with_print_point_function(int *Elt, std::ostream &ost, void(*point_label)(std::stringstream &sstr, int pt, void *data), void *point_label_data)
field_theory::finite_field * GFq
void general_linear_action_from_the_right(int *v, int *A, int *vA, int verbose_level)
void GL_one_internal(int *Elt)
void matrices_without_eigenvector_one(sims *S, int *&Sol, int &cnt, int f_path_select, int select_value, int verbose_level)
void init_general_linear_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
long int GL_image_of_PG_element(int *Elt, long int a, int verbose_level)
long int image_of_element(int *Elt, long int a, int verbose_level)
void substitute_surface_equation(int *Elt, int *coeff_in, int *coeff_out, algebraic_geometry::surface_domain *Surf, int verbose_level)
int GL_element_entry_ij(int *Elt, int i, int j)
void init_base_affine(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
long int path_rank_lint()
void group_order(ring_theory::longinteger_object &go)
void path_unrank_lint(long int a)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
int get_orbit_length(int i)
#define Int_vec_zero(A, B)
#define Int_matrix_print(A, B, C)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects