12namespace layer3_group_actions {
25 int *input,
int *output,
31 input, output, elt, verbose_level);
35 void *elt,
int i,
int j)
82 void *a,
void *b,
void *ab)
132 ostream &ost,
void *elt)
138 ostream &ost,
void *elt)
144 ostream &ost,
void *elt)
160 cout <<
"action::unrank_point ptr_unrank_point == NULL, label=" <<
ptr->
label << endl;
170 cout <<
"action::rank_point ptr_rank_point == NULL, label=" <<
ptr->
label << endl;
177 int *data,
void *elt)
183 ostream &ost,
void *elt)
189 ostream &ost,
void *elt)
199 long int a,
void *elt,
int verbose_level)
202 cout <<
"action::element_image_of ptr == NULL" << endl;
210 int *input,
int *output,
void *elt,
214 cout <<
"action::element_image_of_low_level "
215 "ptr is NULL" << endl;
221 input, output, elt, verbose_level);
225 void *elt,
int verbose_level)
232 int i,
int j,
int verbose_level)
236 elt, i, j, verbose_level);
249 void *elt,
int verbose_level)
251 int f_v = (verbose_level >= 1);
255 cout <<
"action::element_is_one "
256 "in action " <<
label << endl;
260 int drop_out_level, image;
263 cout <<
"action::element_is_one "
264 "before Kernel->strip" << endl;
267 drop_out_level, image, 0 );
270 cout <<
"action::element_is_one "
271 "returning " << ret << endl;
280 cout <<
"action::element_is_one "
281 "returning " << ret << endl;
288 void *elt,
void *Elt,
int verbose_level)
295 void *Elt,
void *elt,
int verbose_level)
302 int hdl,
void *elt,
int verbose_level)
309 void *elt,
int verbose_level)
316 void *a,
void *b,
void *ab,
int verbose_level)
323 void *a,
void *av,
int verbose_level)
330 void *a,
void *at,
int verbose_level)
336 void *a,
void *b,
int verbose_level)
342 int hdl,
int verbose_level)
348 void *elt, ostream &ost)
354 void *elt, ostream &ost)
357 cout <<
"action::element_print_quick "
358 "ptr_element_print_quick == NULL" << endl;
365 void *elt, ostream &ost)
381 ost <<
"$$" <<
label << endl;
383 ost <<
"$$" << endl <<
"of order $" << ord <<
"$ and with "
384 << n <<
" fixed points." << endl;
389 void *elt, std::ostream &ost,
390 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
391 void *point_label_data)
394 *
this, elt, ost, point_label, point_label_data);
398 void *elt, ostream &ost)
404 void *elt,
int *data)
410 void *elt, ostream &ost)
416 void *elt, ostream &ost)
422 void *elt, ostream &ost)
430 ostream &ost,
int verbose_level)
438 int *perm,
int verbose_level)
440 int f_v = (verbose_level >= 1);
441 int f_vv = (verbose_level >= 2);
445 cout <<
"action::element_as_permutation" << endl;
447 for (i = 0; i <
degree; i++) {
449 cout <<
"action::element_as_permutation" << i << endl;
454 cout <<
"action::element_as_permutation "
455 << i <<
"->" << j << endl;
459 cout <<
"action::element_as_permutation done" << endl;
464 void *elt, ostream &ost,
465 int offset,
int f_do_it_anyway_even_for_big_degree,
466 int f_print_cycles_of_length_one,
int verbose_level)
468 int f_v = (verbose_level >= 1);
469 int f_vv = (verbose_level >= 2);
471 int f_cycle_length =
FALSE;
472 int f_max_cycle_length =
FALSE;
473 int max_cycle_length = 50;
474 int f_orbit_structure =
FALSE;
478 cout <<
"action::element_print_as_permutation_with_offset "
479 "degree=" <<
degree << endl;
482 cout <<
"action::element_print_as_permutation_with_offset "
483 "the degree is too large, we won't print the permutation" << endl;
487 for (i = 0; i <
degree; i++) {
489 cout <<
"action::element_print_as_permutation_with_offset "
490 "computing image of " << i << endl;
493 elt, verbose_level - 2);
495 cout <<
"action::element_print_as_permutation_with_offset "
496 << i <<
"->" << j << endl;
502 f_print_cycles_of_length_one,
504 f_max_cycle_length, max_cycle_length,
514 cout <<
"action::element_print_as_permutation_with_offset: "
515 "calling perm_print_cycles_sorted_by_length_offset" << endl;
521 perm_print_cycles_sorted_by_length_offset(ost,
degree, v, offset,
522 f_do_it_anyway_even_for_big_degree, f_print_cycles_of_length_one,
534 ostream &ost,
int offset,
535 int max_cycle_length,
536 int f_orbit_structure)
539 int f_print_cycles_of_length_one =
FALSE;
540 int f_cycle_length =
FALSE;
541 int f_max_cycle_length =
TRUE;
545 for (i = 0; i <
degree; i++) {
551 f_print_cycles_of_length_one,
553 f_max_cycle_length, max_cycle_length, f_orbit_structure,
559 void *elt,
int size,
long int *set)
563 for (i = 0; i < size; i++) {
565 cout << i <<
" -> " << j << endl;
576 for (i = 0; i <
degree; i++) {
588 ofstream &fp,
int verbose_level)
590 int f_v = (verbose_level >= 1);
605 ifstream &fp,
int verbose_level)
607 int f_v = (verbose_level >= 1);
622 std::string &fname,
int verbose_level)
624 int f_v = (verbose_level >= 1);
629 f2 = fopen(fname,
"wb");
634 ofstream fp(fname, ios::binary);
641 cout <<
"written file " << fname <<
" of size "
647 std::string &fname,
int verbose_level)
649 int f_v = (verbose_level >= 1);
653 cout <<
"element_read_file: "
654 "reading from file " << fname
655 <<
" of size " << Fio.
file_size(fname) << endl;
659 f2 = fopen(fname,
"rb");
665 ifstream fp(fname, ios::binary);
676 int f_v = (verbose_level >= 1);
680 cout <<
"action::element_write_to_memory_object" << endl;
692 int f_v = (verbose_level >= 1);
698 cout <<
"action::element_read_from_memory_object" << endl;
709 ofstream &fp,
int verbose_level)
711 int f_v = (verbose_level >= 1);
715 cout <<
"action::element_write_to_file_binary" << endl;
721 cout <<
"action::element_write_to_file_binary "
722 "coded_elt_size_in_char == 0" << endl;
733 cout <<
"action::element_write_to_file_binary done" << endl;
738 ifstream &fp,
int verbose_level)
740 int f_v = (verbose_level >= 1);
745 cout <<
"action::element_read_from_file_binary" << endl;
752 cout <<
"action::element_read_from_file_binary coded_elt_size_in_char=" <<
coded_elt_size_in_char << endl;
758 cout <<
"action::element_read_from_file_binary done" << endl;
764 int f_v = (verbose_level >= 1);
767 cout <<
"action::random_element" << endl;
773 cout <<
"action::random_element done" << endl;
780 int f_v = (verbose_level >= 1);
783 cout <<
"action::all_elements" << endl;
787 cout <<
"action::all_elements !f_has_sims" << endl;
802 for (i = 0; i < goi; i++) {
807 cout <<
"action::all_elements done" << endl;
815 int f_v = (verbose_level >= 1);
819 cout <<
"action::all_elements_save_csv" << endl;
823 cout <<
"action::all_elements_save_csv !f_has_sims" << endl;
838 ost <<
"Row,Element" << endl;
839 for (i = 0; i < vec->
len; i++) {
846 ost << i <<
",\"" << ss.str() <<
"\"" << endl;
848 ost <<
"END" << endl;
851 cout <<
"action::all_elements_save_csv Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
858 cout <<
"action::all_elements_save_csv done" << endl;
a collection of combinatorial functions
void perm_print_offset(std::ostream &ost, int *a, int n, int offset, int f_print_cycles_of_length_one, int f_cycle_length, int f_max_cycle_length, int max_cycle_length, int f_orbit_structure, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
int perm_signum(int *perm, long int n)
a collection of functions related to file io
long int file_size(std::string &fname)
for serialization of complex data types
void append(long int length, char *d, int verbose_level)
a class to represent arbitrary precision integers
long int(* ptr_rank_point)(action &A, int *v)
void(* ptr_element_print_for_make_element)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_dispose)(action &A, int hdl, int verbose_level)
int(* ptr_element_linear_entry_frobenius)(action &A, void *elt, int verbose_level)
void(* ptr_unrank_point)(action &A, long int rk, int *v)
void(* ptr_element_transpose)(action &A, void *a, void *at, int verbose_level)
int nb_times_unpack_called
void(* ptr_element_print)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_print_latex_with_print_point_function)(action &A, void *elt, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void(* ptr_element_print_quick)(action &A, void *elt, std::ostream &ost)
int(* ptr_element_linear_entry_ij)(action &A, void *elt, int i, int j, int verbose_level)
void(* ptr_element_unpack)(action &A, void *elt, void *Elt, int verbose_level)
void(* ptr_element_move)(action &A, void *a, void *b, int verbose_level)
int nb_times_image_of_low_level_called
void(* ptr_element_image_of_low_level)(action &A, int *input, int *output, void *elt, int verbose_level)
int(* ptr_element_is_one)(action &A, void *elt, int verbose_level)
long int(* ptr_element_image_of)(action &A, long int a, void *elt, int verbose_level)
void(* ptr_element_print_for_make_element_no_commas)(action &A, void *elt, std::ostream &ost)
int nb_times_retrieve_called
void(* ptr_print_point)(action &A, long int i, std::ostream &ost)
void(* ptr_element_invert)(action &A, void *a, void *av, int verbose_level)
void(* ptr_element_print_latex)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_one)(action &A, void *elt, int verbose_level)
int nb_times_image_of_called
void(* ptr_element_print_verbose)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_code_for_make_element)(action &A, void *elt, int *data)
void(* ptr_element_retrieve)(action &A, int hdl, void *elt, int verbose_level)
void(* ptr_element_pack)(action &A, void *Elt, void *elt, int verbose_level)
int nb_times_store_called
int(* ptr_element_store)(action &A, void *elt, int verbose_level)
void(* ptr_element_mult)(action &A, void *a, void *b, void *ab, int verbose_level)
int nb_times_invert_called
void print_for_make_element(std::ostream &ost, void *elt)
void element_dispose(int hdl, int verbose_level)
void element_print_latex(void *elt, std::ostream &ost)
void element_print_as_permutation_with_offset(void *elt, std::ostream &ost, int offset, int f_do_it_anyway_even_for_big_degree, int f_print_cycles_of_length_one, int verbose_level)
void element_unpack(void *elt, void *Elt, int verbose_level)
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void mult(void *a, void *b, void *ab)
int coded_elt_size_in_char
void element_pack(void *Elt, void *elt, int verbose_level)
void element_retrieve(int hdl, void *elt, int verbose_level)
void mult_apply_from_the_right(void *a, void *b)
void element_read_from_file_binary(int *Elt, std::ifstream &fp, int verbose_level)
void print_quick(std::ostream &ost, void *elt)
void unpack(void *elt, void *Elt)
int element_linear_entry_frobenius(void *elt, int verbose_level)
void element_print_latex_with_extras(void *elt, std::string &label, std::ostream &ost)
void element_mult(void *a, void *b, void *ab, int verbose_level)
long int rank_point(int *v)
void element_print_as_permutation_with_offset_and_max_cycle_length(void *elt, std::ostream &ost, int offset, int max_cycle_length, int f_orbit_structure)
void code_for_make_element(int *data, void *elt)
void element_read_from_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
int linear_entry_frobenius(void *elt)
int image_of(void *elt, int a)
void element_write_to_file_binary(int *Elt, std::ofstream &fp, int verbose_level)
int element_is_one(void *elt, int verbose_level)
void mult_apply_from_the_left(void *a, void *b)
void element_print_for_make_element(void *elt, std::ostream &ost)
void random_element(groups::sims *S, int *Elt, int verbose_level)
void image_of_low_level(void *elt, int *input, int *output, int verbose_level)
void pack(void *Elt, void *elt)
void element_print_as_permutation_verbose(void *elt, std::ostream &ost, int verbose_level)
void unrank_point(long int rk, int *v)
void retrieve(void *elt, int hdl)
void element_code_for_make_element(void *elt, int *data)
void element_invert(void *a, void *av, int verbose_level)
void element_one(void *elt, int verbose_level)
void transpose(void *a, void *at)
void element_write_file_fp(int *Elt, std::ofstream &fp, int verbose_level)
void element_print_image_of_set(void *elt, int size, long int *set)
void element_read_file_fp(int *Elt, std::ifstream &fp, int verbose_level)
char * element_rw_memory_object
void element_as_permutation(void *elt, int *perm, int verbose_level)
void print_for_make_element_no_commas(std::ostream &ost, void *elt)
void invert_in_place(void *a)
void element_read_file(int *Elt, std::string &fname, int verbose_level)
void element_image_of_low_level(int *input, int *output, void *elt, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void print_point(int a, std::ostream &ost)
int element_linear_entry_ij(void *elt, int i, int j, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
int element_signum_of_permutation(void *elt)
void all_elements(data_structures_groups::vector_ge *&vec, int verbose_level)
void element_print_latex_with_print_point_function(void *elt, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void all_elements_save_csv(std::string &fname, int verbose_level)
void element_write_to_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
int find_fixed_points(void *elt, int *fixed_points, int verbose_level)
void invert(void *a, void *av)
void element_print_as_permutation(void *elt, std::ostream &ost)
void element_write_file(int *Elt, std::string &fname, int verbose_level)
action_pointer_table * ptr
void element_transpose(void *a, void *at, int verbose_level)
void element_print_for_make_element_no_commas(void *elt, std::ostream &ost)
void element_print_verbose(void *elt, std::ostream &ost)
void move(void *a, void *b)
int element_order(void *elt)
long int element_image_of(long int a, void *elt, int verbose_level)
void print(std::ostream &ost, void *elt)
int linear_entry_ij(void *elt, int i, int j)
int element_store(void *elt, int verbose_level)
void print_as_permutation(std::ostream &ost, void *elt)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void random_element(int *elt, int verbose_level)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
int strip(int *elt, int *residue, int &drop_out_level, int &image, int verbose_level)
#define Int_vec_print_str_naked(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects