16namespace layer5_applications {
40 packing_type_idx = NULL;
80 for (i = 0; i < nb_types; i++) {
88 if (packing_type_idx) {
104 int f_v = (verbose_level >= 1);
110 cout <<
"invariants_packing::init" << endl;
123 cout <<
"invariants_packing::init orbit " << orbit
141 cout <<
"invariants_packing::init loading invariants done" << endl;
161 int rep, first, id, a;
170 for (i = 0; i <
Iso->
size; i++) {
190 cout <<
"invariants_packing::init orbit=" << orbit << endl;
192 if (Sorting.
vec_search((
void **)List_of_types,
193 packing_types_compare_function,
this,
202 cout <<
"invariants_packing::init New type ";
205 P->nb_iso_types_of_spreads);
206 cout <<
" at position " << idx << endl;
208 for (i = nb_types; i > idx; i--) {
209 List_of_types[i] = List_of_types[i - 1];
210 Frequency[i] = Frequency[i - 1];
212 List_of_types[idx] =
NEW_int(
P->nb_iso_types_of_spreads);
215 P->nb_iso_types_of_spreads);
218 cout <<
"invariants_packing::init "
219 "nb_types=" << nb_types << endl;
226 cout <<
"invariants_packing::init "
228 <<
" types of packings" << endl;
240 if (Sorting.
vec_search((
void **)List_of_types,
241 packing_types_compare_function,
this,
246 packing_type_idx[orbit] = idx;
249 cout <<
"invariants_packing::init "
250 "error: did not find type of packing" << endl;
257 cout <<
"invariants_packing::init "
258 "before compute_dual_packings" << endl;
262 cout <<
"invariants_packing::init "
263 "after compute_dual_packings" << endl;
267 cout <<
"invariants_packing::init done" << endl;
274 int f_v = (verbose_level >= 1);
280 cout <<
"invariants_packing::compute_dual_packings" << endl;
288 int f_implicit_fusion =
TRUE;
297 for (i = 0; i <
Iso->
size; i++) {
302 for (i = 0; i <
Iso->
size; i++) {
317 f_implicit_fusion, verbose_level - 3);
323 fname.assign(
"Dual_idx.csv");
327 fname.assign(
"Dual_spread_idx.csv");
332 cout <<
"invariants_packing::compute_dual_packings done" << endl;
338 int f_only_self_dual,
int f_only_not_self_dual,
341 int f_v = (verbose_level >= 1);
348 cout <<
"invariants_packing::make_table" << endl;
351 if (f_only_self_dual) {
352 ost <<
"\\chapter{Self Polar Packings}" << endl << endl;
354 else if (f_only_not_self_dual) {
355 ost <<
"\\chapter{Not Self Polar Packings}" << endl << endl;
358 ost <<
"\\chapter{All Packings}" << endl << endl;
361 ost <<
"For each packing, let $a_i$ be the number of spreads "
362 "of isomorphism type $i$\\\\" << endl;
363 ost <<
"The type of the packing is the vector $(a_0,\\ldots, "
364 "a_{N-1})$ where $N$ is the number of isomorphism types "
365 "of spreads of $\\PG(3," <<
P->
q <<
")$\\\\" << endl;
367 ost <<
"\\begin{center}" << endl;
368 ost <<
"\\begin{tabular}{|c|c|l|p{6cm}}" << endl;
369 ost <<
"\\hline" << endl;
370 ost <<
"Type & Number of Packings & Distr. of Aut Group "
371 "Orders\\\\" << endl;
372 ost <<
"\\hline" << endl;
373 ost <<
"\\hline" << endl;
377 if (f_only_self_dual) {
378 sprintf(str,
"ids_of_self_dual_type_%d.csv", i);
380 else if (f_only_not_self_dual) {
381 sprintf(str,
"ids_of_not_self_dual_type_%d.csv", i);
384 sprintf(str,
"ids_of_all_type_%d.csv", i);
401 if (f_only_self_dual) {
407 else if (f_only_not_self_dual) {
409 if (dual != j && dual > j) {
418 for (j = 0; j < nb; j++) {
432 ost <<
"\\\\" << endl;
436 ost <<
"\\hline" << endl;
437 ost <<
"\\end{tabular}" << endl;
438 ost <<
"\\end{center}" << endl << endl;
441 cout <<
"invariants_packing::make_table done" << endl;
446static int packing_types_compare_function(
void *a,
void *b,
void *data)
a collection of functions related to sorted vectors
int vec_search(void **v, int(*compare_func)(void *a, void *b, void *data), void *data_for_compare, int len, void *a, int &idx, int verbose_level)
void lint_vec_heapsort(long int *v, int len)
a statistical analysis of data consisting of vectors of ints
int * Frequency_in_lex_order
void init(int *data, int data_length, int data_set_sz, int verbose_level)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void print_naked_tex(std::ostream &ost, int f_backwards)
long int * dual_spread_idx
a collection of functions related to file io
void int_vecs_write_csv(int *v1, int *v2, int len, std::string &fname, const char *label1, const char *label2)
void lint_vec_write_csv(long int *v, int len, std::string &fname, const char *label)
classification of combinatorial objects using subobjects
void compute_Ago_Ago_induced(ring_theory::longinteger_object *&Ago, ring_theory::longinteger_object *&Ago_induced, int verbose_level)
void load_solution(int id, long int *data)
std::string prefix_invariants
int identify_database_is_open(long int *set, int f_implicit_fusion, int verbose_level)
collection of invariants of a set of packings in PG(3,q)
ring_theory::longinteger_object * Ago_induced
void make_table(isomorph *Iso, std::ostream &ost, int f_only_self_dual, int f_only_not_self_dual, int verbose_level)
data_structures::tally_vector_data * Classify
int * Spread_type_of_packing
ring_theory::longinteger_object * Ago
void init(isomorph *Iso, packing_classify *P, int verbose_level)
void compute_dual_packings(isomorph *Iso, int verbose_level)
spreads::spread_classify * T
classification of packings in PG(3,q)
spreads::spread_table_with_selection * Spread_table_with_selection
spreads::spread_classify * T
geometric invariants of a packing in PG(3,q)
void init(packing_classify *P, std::string &prefix, std::string &prefix_tex, int iso_cnt, long int *the_packing, int verbose_level)
geometry::spread_tables * Spread_tables
int nb_iso_types_of_spreads
#define Int_vec_zero(A, B)
#define NEW_OBJECTS(type, n)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects