15namespace layer1_foundations {
16namespace data_structures {
19static int compare_func_for_bitvectors(
void *a,
void *b,
void *data);
84 int f_v = (verbose_level >= 1);
88 cout <<
"classify_bitvectors::init, N=" <<
N << endl;
97 for (i = 0; i <
N; i++) {
106 cout <<
"classify_bitvectors::init done" << endl;
111 int &idx,
int verbose_level)
113 int f_v = (verbose_level >= 1);
118 cout <<
"classify_bitvectors::search" << endl;
121 compare_func_for_bitvectors, (
void *)
this,
129 cout <<
"classify_bitvectors::search done ret=" << ret << endl;
135 void *extra_data,
int &f_found,
int &idx,
int verbose_level)
137 int f_v = (verbose_level >= 1);
141 cout <<
"classify_bitvectors::add rep_len=" <<
rep_len << endl;
145 cout <<
"classify_bitvectors::add n >= N" << endl;
146 cout <<
"n=" <<
n << endl;
147 cout <<
"N=" <<
N << endl;
151 compare_func_for_bitvectors, (
void *)
this,
155 cout <<
"classify_bitvectors::add vec_search returns TRUE, idx=" << idx << endl;
163 cout <<
"classify_bitvectors::add vec_search returns FALSE, new bitvector, before add_at_idx" << endl;
167 cout <<
"classify_bitvectors::add vec_search returns FALSE, new bitvector, after add_at_idx" << endl;
175 cout <<
"classify_bitvectors::add done, nb_types="
184 ret = compare_func_for_bitvectors((
void **)
Type_data[idx], data, (
void *)
this);
189 void *extra_data,
int idx,
int verbose_level)
191 int f_v = (verbose_level >= 1);
196 cout <<
"classify_bitvectors::add_at_idx" << endl;
205 for (i = 0; i <
rep_len; i++) {
212 for (i = 0; i <
n; i++) {
223 int f_v = (verbose_level >= 1);
227 cout <<
"classify_bitvectors::finalize" << endl;
232 cout <<
"classify_bitvectors::finalize type_of=";
238 cout <<
"classify_bitvectors::finalize classification:" << endl;
257 cout <<
"classify_bitvectors::finalize done" << endl;
265 cout <<
"We found " <<
nb_types <<
" types:" << endl;
271 for (j = 0; j <
rep_len; j++) {
286 cout <<
"We found " <<
nb_types <<
" types:" << endl;
291 for (j = 0; j <
rep_len; j++) {
303 void (*encode_function)(
void *extra_data,
304 long int *&encoding,
int &encoding_sz,
void *global_data),
305 void (*get_group_order_or_NULL)(
void *extra_data,
310 int f_v = (verbose_level >= 1);
316 cout <<
"classify_bitvectors::save" << endl;
319 fname_txt.assign(prefix);
320 fname_txt.append(
"_iso.txt");
321 fname_csv.assign(prefix);
322 fname_csv.append(
"_iso.csv");
326 cout <<
"classify_bitvectors::save perm == NULL" << endl;
329 long int *Reps = NULL;
334 cout <<
"classify_bitvectors::save writing file "
335 << fname_txt << endl;
338 ofstream fp(fname_txt);
348 cout <<
"classify_bitvectors::save " << i <<
" / "
350 <<
" before encode_function" << endl;
353 encoding, encoding_sz, global_data);
355 cout <<
"classify_bitvectors::save " << i
357 <<
" encoding_sz=" << encoding_sz << endl;
360 for (h = 0; h < encoding_sz; h++) {
361 fp <<
" " << encoding[h];
363 if (get_group_order_or_NULL) {
377 if (encoding_sz != sz) {
378 cout <<
"encoding_sz != sz" << endl;
385 fp <<
"-1 " <<
nb_types <<
" " <<
N << endl;
390 cout <<
"classify_bitvectors::save Written "
392 <<
" of size " << Fio.
file_size(fname_txt)
394 <<
" orbit representatives obtained from "
395 <<
N <<
" candidates, encoding size = " << sz << endl;
399 cout <<
"classify_bitvectors::save writing "
400 "file " << fname_csv << endl;
405 cout <<
"classify_bitvectors::save "
406 "Written file " << fname_csv
407 <<
" of size " << Fio.
file_size(fname_csv)
409 <<
" orbit representatives obtained from "
410 <<
N <<
" candidates, encoding size = " << sz << endl;
418 cout <<
"classify_bitvectors::save done" << endl;
422static int compare_func_for_bitvectors(
void *a,
void *b,
void *data)
430 for (i = 0; i < CB->
rep_len; i++) {
classification of 0/1 matrices using canonical forms
int compare_at(uchar *data, int idx)
void add_at_idx(uchar *data, void *extra_data, int idx, int verbose_level)
void search_and_add_if_new(uchar *data, void *extra_data, int &f_found, int &idx, int verbose_level)
void finalize(int verbose_level)
void init(int N, int rep_len, int verbose_level)
void save(std::string &prefix, void(*encode_function)(void *extra_data, long int *&encoding, int &encoding_sz, void *global_data), void(*get_group_order_or_NULL)(void *extra_data, ring_theory::longinteger_object &go, void *global_data), void *global_data, int verbose_level)
int search(uchar *data, int &idx, int verbose_level)
a collection of functions related to sorted vectors
void int_vec_heapsort_with_log(int *v, int *w, int len)
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)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void print(int f_backwards)
a collection of functions related to file io
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
long int file_size(std::string &fname)
a class to represent arbitrary precision integers
std::ostream & print_not_scientific(std::ostream &ost)
#define Lint_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects