16namespace layer3_group_actions {
17namespace data_structures_groups {
57 int f_v = (verbose_level >= 1);
60 cout <<
"vector_ge::init" << endl;
68 cout <<
"vector_ge::init done" << endl;
75 int f_v = (verbose_level >= 1);
78 cout <<
"vector_ge::copy" << endl;
82 vector_copy->
init(
A, verbose_level);
84 for (i = 0; i <
len; i++) {
88 cout <<
"vector_ge::copy done" << endl;
95 int f_v = (verbose_level >= 1);
98 cout <<
"vector_ge::init_by_hdl" << endl;
100 init(
A, verbose_level);
102 for (i = 0; i < nb_gen; i++) {
106 cout <<
"vector_ge::init_by_hdl done" << endl;
112 int f_v = (verbose_level >= 1);
115 cout <<
"vector_ge::init_single" << endl;
117 init(
A, verbose_level);
121 cout <<
"vector_ge::init_single done" << endl;
127 int f_v = (verbose_level >= 1);
130 cout <<
"vector_ge::init_double" << endl;
132 init(
A, verbose_level);
137 cout <<
"vector_ge::init_double done" << endl;
143 int nb_elements,
int verbose_level)
146 int f_v = (verbose_level >= 1);
147 int f_vv = (verbose_level >= 2);
152 cout <<
"vector_ge::init_from_permutation_representation" << endl;
155 init(
A, verbose_level);
156 allocate(nb_elements, verbose_level);
157 for (i = 0; i < nb_elements; i++) {
161 cout <<
"vector_ge::init_from_permutation_representation "
162 "generator " << i <<
": " << endl;
171 cout <<
"vector_ge::init_from_permutation_representation done" << endl;
176 int nb_elements,
int elt_size,
int verbose_level)
178 int f_v = (verbose_level >= 1);
179 int f_vv = (verbose_level >= 2);
184 cout <<
"vector_ge::init_from_data" << endl;
187 init(
A, verbose_level);
188 allocate(nb_elements, verbose_level);
189 for (i = 0; i < nb_elements; i++) {
192 cout <<
"vector_ge::init_from_data "
193 "generator " << i <<
": " << endl;
201 cout <<
"vector_ge::init_from_data done" << endl;
206 int *Elt,
int verbose_level)
208 int f_v = (verbose_level >= 1);
210 int *Elt1, *Elt2, *Elt3;
213 cout <<
"vector_ge::init_conjugate_svas_of" << endl;
216 init(v->
A, verbose_level);
223 for (i = 0; i <
len; i++) {
233 cout <<
"vector_ge::init_conjugate_svas_of done" << endl;
238 int *Elt,
int verbose_level)
240 int f_v = (verbose_level >= 1);
242 int *Elt1, *Elt2, *Elt3;
245 cout <<
"vector_ge::init_conjugate_svas_of" << endl;
248 init(v->
A, verbose_level);
255 for (i = 0; i <
len; i++) {
265 cout <<
"vector_ge::init_conjugate_sasv_of done" << endl;
272 if (i < 0 || i >=
len) {
273 cout <<
"vector_ge::ith() access error "
274 "i = " << i <<
" len = " <<
len << endl;
285 for (i = 0; i <
len; i++) {
286 ost <<
"Element " << i <<
" / " <<
len <<
" is:" << endl;
300 for (i = 0; i <
len; i++) {
302 cout <<
"vector_ge::print fatal: data == NULL" << endl;
321 for (i = 0; i <
len; i++) {
323 cout <<
"vector_ge::print fatal: data == NULL" << endl;
342 for (i = 0; i <
len; i++) {
344 cout <<
"vector_ge::print fatal: data == NULL" << endl;
362 for (i = 0; i <
len; i++) {
369 if (((i + 1) % 3) == 0 && i <
len - 1) {
384 ost <<
"Generators for a group of order " << go <<
":" << endl;
386 for (i = 0; i <
len; i++) {
390 if (((i + 1) % 4) == 0 && i <
len - 1) {
396 for (i = 0; i <
len; i++) {
398 ost <<
"\\\\" << endl;
407 for (i = 0; i <
len; i++) {
410 cout <<
"is the permutation" << endl;
414 cout <<
"vector_ge::print_as_permutation "
415 "the degree is too large, we won't print "
416 "the permutation" << endl;
427 int f_v = (verbose_level >= 1);
430 cout <<
"vector_ge::allocate" << endl;
440 cout <<
"vector_ge::allocate done" << endl;
447 int *elt, *elt2, i, l;
449 int f_v = (verbose_level >= 1);
452 cout <<
"vector_ge::reallocate" << endl;
457 for (i = 0; i < l; i++) {
469 cout <<
"vector_ge::reallocate done" << endl;
478 int f_v = (verbose_level >= 1);
481 cout <<
"vector_ge::reallocate_and_insert_at len=" <<
len << endl;
484 for (i = 0; i <
len; i++) {
500 cout <<
"vector_ge::reallocate_and_insert_at data == NULL" << endl;
505 if (position < 0 || position >=
len) {
506 cout <<
"vector_ge::reallocate_and_insert_at position out of bounds, position=" << position << endl;
511 cout <<
"vector_ge::reallocate_and_insert_at done" << endl;
521 int f_v = (verbose_level >= 1);
524 cout <<
"vector_ge::insert_at" << endl;
526 for (i = length_before; i >= position; i--) {
537 cout <<
"vector_ge::insert_at done" << endl;
543 int f_v = (verbose_level >= 1);
546 cout <<
"vector_ge::append" << endl;
550 cout <<
"vector_ge::append done" << endl;
569 int *Elt1, *Elt2, *Elt3;
575 for (i = 0; i <
len; i++) {
588 int *Elt1, *Elt2, *Elt3;
594 for (i = 0; i <
len; i++) {
609 for (i = 0; i < l; i++) {
610 ost <<
"generator " << i <<
":" << endl;
619 int f_offset,
int offset,
int f_do_it_anyway_even_for_big_degree,
620 int f_print_cycles_of_length_one)
628 ost <<
"Strong generators: (" << l <<
" of them)" << endl;
629 ost <<
"f_print_as_permutation=" << f_print_as_permutation << endl;
630 for (i = 0; i < l; i++) {
631 ost <<
"generator " << i <<
":" << endl;
634 if (f_print_as_permutation) {
637 offset, f_do_it_anyway_even_for_big_degree,
638 f_print_cycles_of_length_one, 0);
649 ost <<
"Strong generators: (" << l <<
" of them)" << endl;
650 for (i = 0; i < l; i++) {
652 ost <<
"\\\\" << endl;
660 int f_v = (verbose_level >= 1);
664 cout <<
"vector_ge::write_to_memory_object" << endl;
667 for (i = 0; i <
len; i++) {
675 int f_v = (verbose_level >= 1);
679 cout <<
"vector_ge::read_from_memory_object" << endl;
683 for (i = 0; i <
len; i++) {
690 int f_v = (verbose_level >= 1);
694 cout <<
"vector_ge::write_to_file_binary" << endl;
696 fp.write((
char *) &
len,
sizeof(int));
697 for (i = 0; i <
len; i++) {
699 cout <<
"vector_ge::write_to_file_binary writing element " << i <<
" / " <<
len << endl;
707 int f_v = (verbose_level >= 1);
711 cout <<
"vector_ge::read_from_file_binary" << endl;
713 fp.read((
char *) &l,
sizeof(int));
715 for (i = 0; i <
len; i++) {
717 cout <<
"vector_ge::read_from_file_binary reading element " << i <<
" / " <<
len << endl;
725 int f_v = (verbose_level >= 1);
729 cout <<
"vector_ge::write_to_csv_file_coded" << endl;
734 for (i = 0; i <
len; i++) {
743 cout <<
"vector_ge::write_to_csv_file_coded written file " << fname
744 <<
" of size " << Fio.
file_size(fname) << endl;
747 cout <<
"vector_ge::write_to_csv_file_coded done" << endl;
753 int f_v = (verbose_level >= 1);
756 cout <<
"vector_ge::save_csv" << endl;
768 ost <<
"Row,Element" << endl;
769 for (i = 0; i <
len; i++) {
776 ost << i <<
",\"" << ss.str() <<
"\"" << endl;
778 ost <<
"END" << endl;
783 cout <<
"sims::save_csv Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
789 int f_v = (verbose_level >= 1);
792 cout <<
"vector_ge::read_column_csv" << endl;
800 init(
A, verbose_level);
805 cout <<
"vector_ge::read_column_csv reading file " << fname
806 <<
" of size " << Fio.
file_size(fname) << endl;
814 for (i = 0; i < n; i++) {
822 cout <<
"vector_ge::read_column_csv sz != me_sz" << endl;
823 cout <<
"vector_ge::read_column_csv sz = " << sz << endl;
824 cout <<
"vector_ge::read_column_csv me_sz = " << me_sz << endl;
832 cout <<
"vector_ge::read_column_csv done" << endl;
837 const char *rank_vector_text,
groups::sims *S,
int verbose_level)
839 int f_v = (verbose_level >= 1);
842 cout <<
"vector_ge::extract_subset_of_elements_"
843 "by_rank_text_vector" << endl;
850 cout <<
"vector_ge::extract_subset_of_elements_"
851 "by_rank_text_vector after scanning: ";
858 cout <<
"vector_ge::extract_subset_of_elements_"
859 "by_rank_text_vector done" << endl;
864 int *rank_vector,
int len,
groups::sims *S,
int verbose_level)
866 int f_v = (verbose_level >= 1);
871 cout <<
"vector_ge::extract_subset_of_elements_by_rank" << endl;
875 for (i = 0; i <
len; i++) {
880 cout <<
"vector_ge::extract_subset_of_elements_by_rank "
881 "element " << i <<
" = " << r <<
" / " <<
len << endl;
888 cout <<
"vector_ge::extract_subset_of_elements_by_rank done" << endl;
896 for (i = 0; i <
len; i++) {
905 long int *set,
int sz,
int verbose_level)
907 int f_v = (verbose_level >= 1);
911 cout <<
"vector_ge::test_if_all_elements_stabilize_a_set" << endl;
914 for (i = 0; i <
len; i++) {
916 cout <<
"testing element " << i <<
" / " <<
len << endl;
924 cout <<
"vector_ge::test_if_all_elements_stabilize_a_set done" << endl;
933 int f_v = (verbose_level >= 1);
937 cout <<
"vector_ge::orbits_on_points_schreier "
938 "degree = " << A_given->
degree << endl;
941 cout <<
"vector_ge::orbits_on_points_schreier "
949 Sch->
init(A_given, verbose_level - 2);
955 cout <<
"vector_ge::orbits_on_points_schreier "
956 "done, we found " << Sch->
nb_orbits <<
" orbits" << endl;
963 int f_v = (verbose_level >= 1);
968 cout <<
"vector_ge::reverse_isomorphism_exterior_square" << endl;
979 O->
init(1 , 6 , F, verbose_level);
982 K->
init(F, O, verbose_level);
985 for (i = 0; i <
len; i++) {
988 cout <<
"generator " << i <<
" / " <<
len <<
":" << endl;
990 cout <<
"before:" << endl;
993 cout <<
"after:" << endl;
1000 cout <<
"vector_ge::reverse_isomorphism_exterior_square done" << endl;
1008 int f_v = (verbose_level >= 1);
1013 cout <<
"vector_ge::matrix_representation" << endl;
1022 for (i = 0; i <
len; i++) {
1025 M + i * n * n, verbose_level);
1030 cout <<
"vector_ge::matrix_representation done" << endl;
for reading and writing of csv files
void read_spreadsheet(std::string &fname, int verbose_level)
void get_string(std::string &str, int i, int j)
the Klein correspondence between lines in PG(3,q) and points on the Klein quadric
void init(field_theory::finite_field *F, orthogonal_geometry::orthogonal *O, int verbose_level)
void reverse_isomorphism(int *A6, int *A4, int verbose_level)
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
long int file_size(std::string &fname)
for serialization of complex data types
an orthogonal geometry O^epsilon(n,q)
void init(int epsilon, int n, field_theory::finite_field *F, int verbose_level)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
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_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void make_element_from_permutation_representation(int *Elt, groups::sims *S, int *data, int verbose_level)
void element_retrieve(int hdl, void *elt, int verbose_level)
void element_read_from_file_binary(int *Elt, std::ifstream &fp, int verbose_level)
void element_mult(void *a, void *b, void *ab, int verbose_level)
void element_read_from_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
void element_write_to_file_binary(int *Elt, std::ofstream &fp, int verbose_level)
void element_print_for_make_element(void *elt, std::ostream &ost)
void element_code_for_make_element(void *elt, int *data)
field_theory::finite_field * matrix_group_finite_field()
void make_element(int *Elt, int *data, int verbose_level)
int test_if_set_stabilizes(int *Elt, int size, long int *set, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void element_write_to_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
void invert(void *a, void *av)
void element_print_as_permutation(void *elt, std::ostream &ost)
long int element_image_of(long int a, void *elt, int verbose_level)
to hold a vector of group elements
void init_double(actions::action *A, int *Elt1, int *Elt2, int verbose_level)
void conjugate_svas(int *Elt)
void extract_subset_of_elements_by_rank_text_vector(const char *rank_vector_text, groups::sims *S, int verbose_level)
void write_to_memory_object(orbiter_kernel_system::memory_object *m, int verbose_level)
void init_conjugate_svas_of(vector_ge *v, int *Elt, int verbose_level)
void reallocate_and_insert_at(int position, int *elt, int verbose_level)
void matrix_representation(induced_actions::action_on_homogeneous_polynomials *A_on_HPD, int *&M, int &nb_gens, int verbose_level)
void read_from_memory_object(orbiter_kernel_system::memory_object *m, int verbose_level)
void extract_subset_of_elements_by_rank(int *rank_vector, int len, groups::sims *S, int verbose_level)
void init_conjugate_sasv_of(vector_ge *v, int *Elt, int verbose_level)
void append(int *elt, int verbose_level)
void print_as_permutation(std::ostream &ost)
void init_single(actions::action *A, int *Elt, int verbose_level)
void read_column_csv(std::string &fname, actions::action *A, int col_idx, int verbose_level)
void write_to_csv_file_coded(std::string &fname, int verbose_level)
void print_for_make_element(std::ostream &ost)
void allocate(int length, int verbose_level)
void reallocate(int new_length, int verbose_level)
void copy_in(int i, int *elt)
void save_csv(std::string &fname, int verbose_level)
void print(std::ostream &ost)
groups::schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void insert_at(int length_before, int position, int *elt, int verbose_level)
void conjugate_sasv(int *Elt)
void reverse_isomorphism_exterior_square(int verbose_level)
void write_to_file_binary(std::ofstream &fp, int verbose_level)
void copy_out(int i, int *elt)
void copy(vector_ge *&vector_copy, int verbose_level)
void init_from_data(actions::action *A, int *data, int nb_elements, int elt_size, int verbose_level)
void init(actions::action *A, int verbose_level)
void print_generators_tex(ring_theory::longinteger_object &go, std::ostream &ost)
void init_from_permutation_representation(actions::action *A, groups::sims *S, int *data, int nb_elements, int verbose_level)
void print_tex(std::ostream &ost)
int test_if_all_elements_stabilize_a_set(actions::action *A2, long int *set, int sz, int verbose_level)
void init_by_hdl(actions::action *A, int *gen_hdl, int nb_gen, int verbose_level)
void read_from_file_binary(std::ifstream &fp, int verbose_level)
void print_quick(std::ostream &ost)
void print_with_given_action(std::ostream &ost, actions::action *A2)
int test_if_all_elements_stabilize_a_point(actions::action *A2, int pt)
Schreier trees for orbits of groups on points.
void compute_all_point_orbits(int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
induced action on the set of homogeneous polynomials over a finite field
void compute_representation(int *Elt, int *M, int verbose_level)
#define Int_vec_scan(A, B, C)
#define Int_matrix_print(A, B, C)
#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