16namespace layer5_applications {
32 std::string *fnames,
int nb_files,
33 std::string &file_of_spreads,
38 int f_v = (verbose_level >= 1);
42 cout <<
"packings_global::merge_packings" << endl;
49 long int *Spread_table;
54 cout <<
"packings_global::merge_packings "
55 "Reading spread table from file "
56 << file_of_spreads << endl;
58 Fio.lint_matrix_read_csv(file_of_spreads,
59 Spread_table, nb_spreads, spread_size,
62 cout <<
"Reading spread table from file "
63 << file_of_spreads <<
" done" << endl;
64 cout <<
"The spread table contains " << nb_spreads
65 <<
" spreads" << endl;
68 int f, g, N, table_length, nb_reject = 0;
73 cout <<
"packings_global::merge_packings "
74 "counting the overall number of input packings" << endl;
77 for (f = 0; f < nb_files; f++) {
80 cout <<
"packings_global::merge_packings file "
81 << f <<
" / " << nb_files <<
" : " << fnames[f] << endl;
88 S->read_spreadsheet(fnames[f], 0 );
90 table_length = S->nb_rows - 1;
100 cout <<
"packings_global::merge_packings file "
101 <<
"we have " << N <<
" packings in "
102 << nb_files <<
" files" << endl;
105 for (f = 0; f < nb_files; f++) {
108 cout <<
"packings_global::merge_packings file "
109 << f <<
" / " << nb_files <<
" : " << fnames[f] << endl;
116 S->read_spreadsheet(fnames[f], 0 );
118 S->print_table(cout,
FALSE);
121 int ago_idx, original_file_idx, input_idx_idx, input_set_idx;
122 int nb_rows_idx, nb_cols_idx, canonical_form_idx;
124 ago_idx = S->find_by_column(
"ago");
125 original_file_idx = S->find_by_column(
"original_file");
126 input_idx_idx = S->find_by_column(
"input_idx");
127 input_set_idx = S->find_by_column(
"input_set");
128 nb_rows_idx = S->find_by_column(
"nb_rows");
129 nb_cols_idx = S->find_by_column(
"nb_cols");
130 canonical_form_idx = S->find_by_column(
"canonical_form");
132 table_length = S->nb_rows - 1;
137 for (g = 0; g < table_length; g++) {
141 long int *the_set_in;
143 long int *canonical_labeling;
144 int canonical_labeling_sz;
145 int nb_rows, nb_cols;
146 object_in_projective_space *OiP;
149 ago = S->get_int(g + 1, ago_idx);
150 nb_rows = S->get_int(g + 1, nb_rows_idx);
151 nb_cols = S->get_int(g + 1, nb_cols_idx);
153 text = S->get_string(g + 1, input_set_idx);
158 cout <<
"File " << f <<
" / " << nb_files
159 <<
", input set " << g <<
" / "
160 << table_length << endl;
166 cout <<
"canonical_form_idx=" << canonical_form_idx << endl;
168 text = S->get_string(g + 1, canonical_form_idx);
170 cout <<
"text=" << text << endl;
172 Orbitr->Lint_vec.scan(text, canonical_labeling, canonical_labeling_sz);
174 cout <<
"File " << f <<
" / " << nb_files
175 <<
", input set " << g <<
" / "
176 << table_length <<
" canonical_labeling = ";
181 if (canonical_labeling_sz != nb_rows + nb_cols) {
182 cout <<
"packings_global::merge_packings "
183 "canonical_labeling_sz != nb_rows + nb_cols" << endl;
190 cout <<
"packings_global::merge_packings "
191 "before init_packing_from_spread_table" << endl;
193 OiP->init_packing_from_spread_table(P, the_set_in,
194 Spread_table, nb_spreads, spread_size,
197 cout <<
"packings_global::merge_packings "
198 "after init_packing_from_spread_table" << endl;
200 OiP->f_has_known_ago =
TRUE;
201 OiP->known_ago = ago;
205 int nb_rows1, nb_cols1;
207 uchar *canonical_form;
208 int canonical_form_len;
212 cout <<
"packings_global::merge_packings "
213 "before encode_incma" << endl;
215 OiP->encode_incma(Incma_in, nb_rows1, nb_cols1,
218 cout <<
"packings_global::merge_packings "
219 "after encode_incma" << endl;
221 if (nb_rows1 != nb_rows) {
222 cout <<
"packings_global::merge_packings "
223 "nb_rows1 != nb_rows" << endl;
226 if (nb_cols1 != nb_cols) {
227 cout <<
"packings_global::merge_packings "
228 "nb_cols1 != nb_cols" << endl;
232 OiP->input_fname = S->get_string(g + 1, original_file_idx);
233 OiP->input_idx = S->get_int(g + 1, input_idx_idx);
235 text = S->get_string(g + 1, input_set_idx);
237 OiP->set_as_string.assign(text);
240 int L = nb_rows * nb_cols;
243 for (i = 0; i < nb_rows; i++) {
244 ii = canonical_labeling[i];
245 for (j = 0; j < nb_cols; j++) {
246 jj = canonical_labeling[nb_rows + j] - nb_rows;
249 Incma_out[i * nb_cols + j] = Incma_in[ii * nb_cols + jj];
253 cout <<
"packings_global::merge_packings "
254 "before bitvector_allocate_and_coded_length" << endl;
256 canonical_form = bitvector_allocate_and_coded_length(
257 L, canonical_form_len);
258 for (i = 0; i < nb_rows; i++) {
259 for (j = 0; j < nb_cols; j++) {
260 if (Incma_out[i * nb_cols + j]) {
262 bitvector_set_bit(canonical_form, a);
269 cout <<
"packings_global::merge_packings "
270 "before CB->init" << endl;
272 CB->
init(N, canonical_form_len, verbose_level);
275 cout <<
"packings_global::merge_packings "
276 "before CB->add" << endl;
286 cout <<
"packings_global::merge_packings "
287 "CB->add returns f_found = " << f_found
289 <<
" nb_reject=" << nb_reject << endl;
295 object_in_projective_space_with_action *OiPA;
297 OiPA =
NEW_OBJECT(object_in_projective_space_with_action);
299 OiPA->init(OiP, ago, nb_rows, nb_cols,
300 canonical_labeling, 0 );
319 cout <<
"packings_global::merge_packings done, "
320 "we found " << CB->
nb_types <<
" isomorphism types "
321 "of packings" << endl;
329 cout <<
"packings_global::merge_packings done" << endl;
336 std::string &file_of_spreads_original,
339 int f_ago,
int select_ago,
344 int f_v = (verbose_level >= 1);
351 cout <<
"packings_global::select_packings" << endl;
358 long int *Spread_table;
365 cout <<
"packings_global::select_packings "
366 "Reading spread table from file "
367 << file_of_spreads_original << endl;
369 Fio.lint_matrix_read_csv(file_of_spreads_original,
370 Spread_table, nb_spreads, spread_size,
372 if (nb_spreads != Spread_tables->
nb_spreads) {
373 cout <<
"packings_global::select_packings "
374 "nb_spreads != Spread_tables->nb_spreads" << endl;
378 cout <<
"packings_global::select_packings "
379 "spread_size != Spread_tables->spread_size" << endl;
383 cout <<
"Reading spread table from file "
384 << file_of_spreads_original <<
" done" << endl;
385 cout <<
"The spread table contains " << nb_spreads
386 <<
" spreads" << endl;
392 cout <<
"Reading file_isomorphism_type_of_spreads "
393 "computing s2l and l2s" << endl;
399 long int extra_data[1];
402 extra_data[0] = spread_size;
407 for (i = 0; i < nb_spreads; i++) {
409 i * spread_size, set, spread_size);
410 Sorting.lint_vec_heapsort(set, spread_size);
411 if (!Sorting.search_general(Spread_tables->
spread_table,
412 nb_spreads, (
void *) set, idx,
413 table_of_sets_compare_func,
415 cout <<
"packings_global::select_packings "
416 "cannot find spread " << i <<
" = ";
425 cout <<
"Reading file_isomorphism_type_of_spreads "
426 "computing s2l and l2s done" << endl;
429 int g, table_length, nb_reject = 0;
433 cout <<
"packings_global::select_packings file "
441 S->read_spreadsheet(fname, 0 );
443 S->print_table(cout,
FALSE);
446 int ago_idx, original_file_idx, input_idx_idx, input_set_idx;
447 int nb_rows_idx, nb_cols_idx, canonical_form_idx;
449 ago_idx = S->find_by_column(
"ago");
450 original_file_idx = S->find_by_column(
"original_file");
451 input_idx_idx = S->find_by_column(
"input_idx");
452 input_set_idx = S->find_by_column(
"input_set");
453 nb_rows_idx = S->find_by_column(
"nb_rows");
454 nb_cols_idx = S->find_by_column(
"nb_cols");
455 canonical_form_idx = S->find_by_column(
"canonical_form");
457 table_length = S->nb_rows - 1;
464 for (g = 0; g < table_length; g++) {
468 long int *the_set_in;
470 long int *canonical_labeling;
471 int canonical_labeling_sz;
472 int nb_rows, nb_cols;
473 object_in_projective_space *OiP;
474 int f_accept =
FALSE;
478 ago = S->get_int(g + 1, ago_idx);
479 nb_rows = S->get_int(g + 1, nb_rows_idx);
480 nb_cols = S->get_int(g + 1, nb_cols_idx);
482 text = S->get_string(g + 1, input_set_idx);
485 packing_size = set_size_in;
487 if (f_v && (g % 1000) == 0) {
488 cout <<
"File " << fname
489 <<
", input set " << g <<
" / "
490 << table_length << endl;
501 for (i = 0; i < packing_size; i++) {
506 Sorting.int_vec_heapsort(set1, packing_size);
507 for (i = 0; i < packing_size; i++) {
512 Sorting.int_vec_heapsort(set2, packing_size);
516 int_vec_print(cout, set1, packing_size);
519 int_vec_print(cout, set2, packing_size);
522 if (int_vec_compare(set1, set2, packing_size) == 0) {
523 cout <<
"The packing is self-polar" << endl;
533 if (ago == select_ago) {
549 cout <<
"canonical_form_idx=" << canonical_form_idx << endl;
551 text = S->get_string(g + 1, canonical_form_idx);
553 cout <<
"text=" << text << endl;
557 cout <<
"File " << fname
558 <<
", input set " << g <<
" / "
559 << table_length <<
" canonical_labeling = ";
564 if (canonical_labeling_sz != nb_rows + nb_cols) {
565 cout <<
"packings_global::select_packings "
566 "canonical_labeling_sz != nb_rows + nb_cols" << endl;
573 cout <<
"packings_global::select_packings "
574 "before init_packing_from_spread_table" << endl;
576 OiP->init_packing_from_spread_table(P, the_set_in,
577 Spread_table, nb_spreads, spread_size,
580 cout <<
"packings_global::merge_packings "
581 "after init_packing_from_spread_table" << endl;
583 OiP->f_has_known_ago =
TRUE;
584 OiP->known_ago = ago;
588 int nb_rows1, nb_cols1;
590 uchar *canonical_form;
591 int canonical_form_len;
595 cout <<
"packings_global::select_packings "
596 "before encode_incma" << endl;
598 OiP->encode_incma(Incma_in, nb_rows1, nb_cols1,
601 cout <<
"packings_global::select_packings "
602 "after encode_incma" << endl;
604 if (nb_rows1 != nb_rows) {
605 cout <<
"packings_global::select_packings "
606 "nb_rows1 != nb_rows" << endl;
609 if (nb_cols1 != nb_cols) {
610 cout <<
"packings_global::select_packings "
611 "nb_cols1 != nb_cols" << endl;
615 OiP->input_fname = S->get_string(g + 1, original_file_idx);
616 OiP->input_idx = S->get_int(g + 1, input_idx_idx);
618 text = S->get_string(g + 1, input_set_idx);
620 OiP->set_as_string.assign(text);
623 int L = nb_rows * nb_cols;
626 for (i = 0; i < nb_rows; i++) {
627 ii = canonical_labeling[i];
628 for (j = 0; j < nb_cols; j++) {
629 jj = canonical_labeling[nb_rows + j] - nb_rows;
632 Incma_out[i * nb_cols + j] = Incma_in[ii * nb_cols + jj];
636 cout <<
"packings_global::select_packings "
637 "before bitvector_allocate_and_coded_length" << endl;
639 canonical_form = bitvector_allocate_and_coded_length(
640 L, canonical_form_len);
641 for (i = 0; i < nb_rows; i++) {
642 for (j = 0; j < nb_cols; j++) {
643 if (Incma_out[i * nb_cols + j]) {
645 bitvector_set_bit(canonical_form, a);
652 cout <<
"packings_global::select_packings "
653 "before CB->init" << endl;
655 CB->
init(table_length, canonical_form_len, verbose_level);
661 cout <<
"packings_global::select_packings "
662 "before CB->add" << endl;
670 cout <<
"reject" << endl;
674 cout <<
"packings_global::select_packings "
675 "CB->add returns f_found = " << f_found
677 <<
" nb_reject=" << nb_reject
678 <<
" nb_accept=" << nb_accept
679 <<
" CB->n=" << CB->
n
687 object_in_projective_space_with_action *OiPA;
689 OiPA =
NEW_OBJECT(object_in_projective_space_with_action);
691 OiPA->init(OiP, ago, nb_rows, nb_cols,
692 canonical_labeling, 0 );
713 cout <<
"packings_global::select_packings done, "
714 "we found " << CB->
nb_types <<
" isomorphism types "
715 "of packings. nb_accept = " << nb_accept
716 <<
" CB->n = " << CB->
n
717 <<
" CB->nb_types = " << CB->
nb_types
726 cout <<
"packings_global::select_packings done" << endl;
735 std::string &file_of_spreads_original,
736 int f_split,
int split_r,
int split_m,
741 int f_v = (verbose_level >= 1);
744 cout <<
"packings_global::select_packings_self_dual" << endl;
756 long int *Spread_table_original;
763 cout <<
"packings_global::select_packings_self_dual "
764 "Reading spread table from file "
765 << file_of_spreads_original << endl;
767 Fio.lint_matrix_read_csv(file_of_spreads_original,
768 Spread_table_original, nb_spreads, spread_size,
770 if (nb_spreads != Spread_tables->
nb_spreads) {
771 cout <<
"packings_global::select_packings_self_dual "
772 "nb_spreads != Spread_tables->nb_spreads" << endl;
776 cout <<
"packings_global::select_packings_self_dual "
777 "spread_size != Spread_tables->spread_size" << endl;
781 cout <<
"Reading spread table from file "
782 << file_of_spreads_original <<
" done" << endl;
783 cout <<
"The spread table contains " << nb_spreads
784 <<
" spreads" << endl;
790 cout <<
"Reading file_isomorphism_type_of_spreads "
791 "computing s2l and l2s" << endl;
797 long int extra_data[1];
800 extra_data[0] = spread_size;
805 for (i = 0; i < nb_spreads; i++) {
807 i * spread_size, set, spread_size);
808 Sorting.lint_vec_heapsort(set, spread_size);
809 if (!Sorting.search_general(Spread_tables->
spread_table,
810 nb_spreads, (
int *) set, idx,
811 table_of_sets_compare_func,
813 cout <<
"packings_global::select_packings_self_dual "
814 "cannot find spread " << i <<
" = ";
823 cout <<
"Reading file_isomorphism_type_of_spreads "
824 "computing s2l and l2s done" << endl;
827 int g, table_length, nb_reject = 0;
831 cout <<
"packings_global::select_packings_self_dual "
832 "file " << fname << endl;
839 S->read_spreadsheet(fname, 0 );
841 S->print_table(cout,
FALSE);
845 cout <<
"packings_global::select_packings_self_dual "
846 "read file " << fname << endl;
850 int ago_idx, original_file_idx, input_idx_idx, input_set_idx;
851 int nb_rows_idx, nb_cols_idx, canonical_form_idx;
854 cout <<
"packings_global::select_packings_self_dual "
855 "finding column indices" << endl;
858 ago_idx = S->find_by_column(
"ago");
859 original_file_idx = S->find_by_column(
"original_file");
860 input_idx_idx = S->find_by_column(
"input_idx");
861 input_set_idx = S->find_by_column(
"input_set");
862 nb_rows_idx = S->find_by_column(
"nb_rows");
863 nb_cols_idx = S->find_by_column(
"nb_cols");
864 canonical_form_idx = S->find_by_column(
"canonical_form");
866 table_length = S->nb_rows - 1;
874 cout <<
"packings_global::select_packings_self_dual "
875 "first pass, table_length=" << table_length << endl;
880 for (g = 0; g < table_length; g++) {
884 long int *the_set_in;
886 long int *canonical_labeling;
887 int canonical_labeling_sz;
888 int nb_rows, nb_cols;
889 object_in_projective_space *OiP;
892 ago = S->get_int(g + 1, ago_idx);
893 nb_rows = S->get_int(g + 1, nb_rows_idx);
894 nb_cols = S->get_int(g + 1, nb_cols_idx);
896 text = S->get_string(g + 1, input_set_idx);
899 packing_size = set_size_in;
901 if (f_v && (g % 1000) == 0) {
902 cout <<
"File " << fname
903 <<
", input set " << g <<
" / "
904 << table_length << endl;
920 cout <<
"canonical_form_idx=" << canonical_form_idx << endl;
922 text = S->get_string(g + 1, canonical_form_idx);
924 cout <<
"text=" << text << endl;
928 cout <<
"File " << fname
929 <<
", input set " << g <<
" / "
930 << table_length <<
" canonical_labeling = ";
932 canonical_labeling, canonical_labeling_sz);
936 if (canonical_labeling_sz != nb_rows + nb_cols) {
937 cout <<
"packings_global::select_packings_self_dual "
938 "canonical_labeling_sz != nb_rows + nb_cols" << endl;
945 cout <<
"packings_global::select_packings_self_dual "
946 "before init_packing_from_spread_table" << endl;
948 OiP->init_packing_from_spread_table(P, the_set_in,
949 Spread_table_original, nb_spreads, spread_size,
952 cout <<
"packings_global::select_packings_self_dual "
953 "after init_packing_from_spread_table" << endl;
955 OiP->f_has_known_ago =
TRUE;
956 OiP->known_ago = ago;
960 int nb_rows1, nb_cols1;
962 uchar *canonical_form;
963 int canonical_form_len;
967 cout <<
"packings_global::select_packings_self_dual "
968 "before encode_incma" << endl;
970 OiP->encode_incma(Incma_in, nb_rows1, nb_cols1,
973 cout <<
"packings_global::select_packings_self_dual "
974 "after encode_incma" << endl;
976 if (nb_rows1 != nb_rows) {
977 cout <<
"packings_global::select_packings_self_dual "
978 "nb_rows1 != nb_rows" << endl;
981 if (nb_cols1 != nb_cols) {
982 cout <<
"packings_global::select_packings_self_dual "
983 "nb_cols1 != nb_cols" << endl;
987 OiP->input_fname = S->get_string(g + 1, original_file_idx);
988 OiP->input_idx = S->get_int(g + 1, input_idx_idx);
990 text = S->get_string(g + 1, input_set_idx);
992 OiP->set_as_string.assign(text);
995 int L = nb_rows * nb_cols;
998 for (i = 0; i < nb_rows; i++) {
999 ii = canonical_labeling[i];
1000 for (j = 0; j < nb_cols; j++) {
1001 jj = canonical_labeling[nb_rows + j] - nb_rows;
1004 Incma_out[i * nb_cols + j] = Incma_in[ii * nb_cols + jj];
1008 cout <<
"packings_global::select_packings_self_dual "
1009 "before bitvector_allocate_and_coded_length" << endl;
1011 canonical_form = bitvector_allocate_and_coded_length(
1012 L, canonical_form_len);
1013 for (i = 0; i < nb_rows; i++) {
1014 for (j = 0; j < nb_cols; j++) {
1015 if (Incma_out[i * nb_cols + j]) {
1016 a = i * nb_cols + j;
1017 bitvector_set_bit(canonical_form, a);
1024 cout <<
"packings_global::select_packings_self_dual "
1025 "before CB->init" << endl;
1027 CB->
init(table_length, canonical_form_len, verbose_level);
1033 cout <<
"packings_global::select_packings_self_dual "
1034 "before CB->add" << endl;
1042 cout <<
"reject" << endl;
1046 cout <<
"packings_global::select_packings_self_dual "
1047 "CB->add f_found = " << f_found
1049 <<
" nb_reject=" << nb_reject
1050 <<
" nb_accept=" << nb_accept
1051 <<
" CB->n=" << CB->
n
1052 <<
" CB->nb_types=" << CB->
nb_types
1059 object_in_projective_space_with_action *OiPA;
1061 OiPA =
NEW_OBJECT(object_in_projective_space_with_action);
1063 OiPA->init(OiP, ago, nb_rows, nb_cols,
1064 canonical_labeling, 0 );
1085 cout <<
"packings_global::select_packings_self_dual done, "
1086 "we found " << CB->
nb_types <<
" isomorphism types "
1087 "of packings. nb_accept = " << nb_accept
1088 <<
" CB->n = " << CB->
n
1089 <<
" CB->nb_types = " << CB->
nb_types
1096 int nb_self_dual = 0;
1098 int *self_dual_cases;
1099 int nb_self_dual_cases = 0;
1102 self_dual_cases =
NEW_int(table_length);
1106 cout <<
"packings_global::select_packings_self_dual "
1107 "second pass, table_length="
1108 << table_length << endl;
1112 for (g = 0; g < table_length; g++) {
1118 int *canonical_labeling1;
1119 int *canonical_labeling2;
1121 int nb_rows, nb_cols;
1122 object_in_projective_space *OiP1;
1123 object_in_projective_space *OiP2;
1127 ago = S->get_int(g + 1, ago_idx);
1128 nb_rows = S->get_int(g + 1, nb_rows_idx);
1129 nb_cols = S->get_int(g + 1, nb_cols_idx);
1131 text = S->get_string(g + 1, input_set_idx);
1134 packing_size = set_size_in;
1138 if ((g % split_m) != split_r) {
1143 if (f_v && (g1 % 100) == 0) {
1144 cout <<
"File " << fname
1145 <<
", case " << g1 <<
" input set " << g <<
" / "
1147 <<
" nb_self_dual=" << nb_self_dual << endl;
1156 for (i = 0; i < packing_size; i++) {
1161 Sorting.lint_vec_heapsort(set1, packing_size);
1162 for (i = 0; i < packing_size; i++) {
1167 for (i = 0; i < packing_size; i++) {
1172 Sorting.lint_vec_heapsort(set1, packing_size);
1173 Sorting.lint_vec_heapsort(set2, packing_size);
1177 int_vec_print(cout, set1, packing_size);
1180 int_vec_print(cout, set2, packing_size);
1187 OiP1 =
NEW_OBJECT(object_in_projective_space);
1188 OiP2 =
NEW_OBJECT(object_in_projective_space);
1191 cout <<
"packings_global::select_packings_self_dual "
1192 "before init_packing_from_spread_table" << endl;
1194 OiP1->init_packing_from_spread_table(P, set1,
1195 Spread_table_original, nb_spreads, spread_size,
1197 OiP2->init_packing_from_spread_table(P, set2,
1198 Spread_table_original, nb_spreads, spread_size,
1201 cout <<
"packings_global::select_packings_self_dual "
1202 "after init_packing_from_spread_table" << endl;
1204 OiP1->f_has_known_ago =
TRUE;
1205 OiP1->known_ago = ago;
1209 uchar *canonical_form1;
1210 uchar *canonical_form2;
1211 int canonical_form_len;
1219 int nb_rows1, nb_cols1;
1227 cout <<
"packings_global::select_packings_self_dual "
1228 "before encode_incma" << endl;
1230 OiP1->encode_incma(Incma_in1, nb_rows1, nb_cols1,
1232 OiP2->encode_incma(Incma_in2, nb_rows1, nb_cols1,
1235 cout <<
"packings_global::select_packings_self_dual "
1236 "after encode_incma" << endl;
1238 if (nb_rows1 != nb_rows) {
1239 cout <<
"packings_global::select_packings_self_dual "
1240 "nb_rows1 != nb_rows" << endl;
1243 if (nb_cols1 != nb_cols) {
1244 cout <<
"packings_global::select_packings_self_dual "
1245 "nb_cols1 != nb_cols" << endl;
1251 cout <<
"packings_global::select_packings_self_dual "
1252 "before PA->set_stabilizer_of_object" << endl;
1256 canonical_labeling1 =
NEW_int(nb_rows * nb_cols);
1257 canonical_labeling2 =
NEW_int(nb_rows * nb_cols);
1261 canonical_labeling1,
1265 canonical_labeling2,
1269 OiP1->input_fname = S->get_string(g + 1, original_file_idx);
1270 OiP1->input_idx = S->get_int(g + 1, input_idx_idx);
1271 OiP2->input_fname = S->get_string(g + 1, original_file_idx);
1272 OiP2->input_idx = S->get_int(g + 1, input_idx_idx);
1274 text = S->get_string(g + 1, input_set_idx);
1276 OiP1->set_as_string.assign(text);
1278 OiP2->set_as_string.assign(text);
1280 int i, j, ii, jj, a, ret;
1281 int L = nb_rows * nb_cols;
1285 for (i = 0; i < nb_rows; i++) {
1286 ii = canonical_labeling1[i];
1287 for (j = 0; j < nb_cols; j++) {
1288 jj = canonical_labeling1[nb_rows + j] - nb_rows;
1291 Incma_out1[i * nb_cols + j] = Incma_in1[ii * nb_cols + jj];
1294 for (i = 0; i < nb_rows; i++) {
1295 ii = canonical_labeling2[i];
1296 for (j = 0; j < nb_cols; j++) {
1297 jj = canonical_labeling2[nb_rows + j] - nb_rows;
1300 Incma_out2[i * nb_cols + j] = Incma_in2[ii * nb_cols + jj];
1304 cout <<
"packings_global::select_packings_self_dual "
1305 "before bitvector_allocate_and_coded_length" << endl;
1307 canonical_form1 = bitvector_allocate_and_coded_length(
1308 L, canonical_form_len);
1309 for (i = 0; i < nb_rows; i++) {
1310 for (j = 0; j < nb_cols; j++) {
1311 if (Incma_out1[i * nb_cols + j]) {
1312 a = i * nb_cols + j;
1313 bitvector_set_bit(canonical_form1, a);
1317 canonical_form2 = bitvector_allocate_and_coded_length(
1318 L, canonical_form_len);
1319 for (i = 0; i < nb_rows; i++) {
1320 for (j = 0; j < nb_cols; j++) {
1321 if (Incma_out2[i * nb_cols + j]) {
1322 a = i * nb_cols + j;
1323 bitvector_set_bit(canonical_form2, a);
1330 cout <<
"packings_global::select_packings_self_dual "
1331 "before CB->search" << endl;
1336 ret = CB->
search(canonical_form1, idx1, 0 );
1339 cout <<
"cannot find the dual packing, "
1340 "something is wrong" << endl;
1341 ret = CB->
search(canonical_form1, idx1, 5 );
1343 cout <<
"CB:" << endl;
1345 cout <<
"canonical form1: ";
1346 for (
int j = 0; j < canonical_form_len; j++) {
1347 cout << (int) canonical_form1[j];
1348 if (j < canonical_form_len - 1) {
1357 cout <<
"packings_global::select_packings_self_dual "
1358 "CB->search returns idx1=" << idx1 << endl;
1360 ret = CB->
search(canonical_form2, idx2, 0 );
1363 cout <<
"cannot find the dual packing, "
1364 "something is wrong" << endl;
1365 ret = CB->
search(canonical_form2, idx2, 5 );
1367 cout <<
"CB:" << endl;
1369 cout <<
"canonical form2: ";
1370 for (
int j = 0; j < canonical_form_len; j++) {
1371 cout << (int) canonical_form2[j];
1372 if (j < canonical_form_len - 1) {
1380 cout <<
"packings_global::select_packings_self_dual "
1381 "CB->search returns idx2=" << idx2 << endl;
1398 cout <<
"self-dual" << endl;
1400 self_dual_cases[nb_self_dual_cases++] = g;
1408 string fname_self_dual;
1410 string_tools String;
1412 fname_base.assign(fname);
1413 String.chop_off_extension(fname_base);
1414 fname_self_dual.assign(fname);
1415 String.chop_off_extension(fname_self_dual);
1417 sprintf(str,
"_self_dual_r%d_m%d.csv", split_r, split_m);
1420 sprintf(str,
"_self_dual.csv");
1422 fname_self_dual.append(str);
1423 cout <<
"saving self_dual_cases to file " << fname_self_dual << endl;
1424 Fio.int_vec_write_csv(self_dual_cases, nb_self_dual_cases,
1425 fname_self_dual,
"self_dual_idx");
1426 cout <<
"written file " << fname_self_dual
1427 <<
" of size " << Fio.file_size(fname_self_dual) << endl;
1435 cout <<
"packings_global::select_packings_self_dual "
1436 "done, nb_self_dual = " << nb_self_dual << endl;
classification of 0/1 matrices using canonical forms
void search_and_add_if_new(uchar *data, void *extra_data, int &f_found, int &idx, int verbose_level)
void init(int N, int rep_len, int verbose_level)
int search(uchar *data, int &idx, int verbose_level)
void scan(std::string &s, int *&v, int &len)
void scan(std::string &s, long int *&v, int &len)
void copy(long int *from, long int *to, long int len)
void print(std::ostream &ost, long int *v, int len)
tables with line-spreads in PG(3,q)
long int * dual_spread_idx
data_structures::lint_vec * Lint_vec
data_structures::int_vec * Int_vec
void merge_packings(std::string *fnames, int nb_files, std::string &file_of_spreads, data_structures::classify_bitvectors *&CB, int verbose_level)
void select_packings(std::string &fname, std::string &file_of_spreads_original, geometry::spread_tables *Spread_tables, int f_self_polar, int f_ago, int select_ago, data_structures::classify_bitvectors *&CB, int verbose_level)
void select_packings_self_dual(std::string &fname, std::string &file_of_spreads_original, int f_split, int split_r, int split_m, geometry::spread_tables *Spread_tables, data_structures::classify_bitvectors *&CB, int verbose_level)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects