Orbiter 2022
Combinatorial Objects
action_cb.cpp
Go to the documentation of this file.
1// action_cb.cpp
2//
3// Anton Betten
4// 1/1/2009
5
7#include "group_actions.h"
8
9using namespace std;
10
11namespace orbiter {
12namespace layer3_group_actions {
13namespace actions {
14
15
17 void *elt, int a)
18{
20 return (*ptr->ptr_element_image_of)(*this, a, elt, 0);
21}
22
24 void *elt,
25 int *input, int *output,
26 int verbose_level)
27{
30 *this,
31 input, output, elt, verbose_level);
32}
33
35 void *elt, int i, int j)
36{
37 return (*ptr->ptr_element_linear_entry_ij)(*this, elt, i, j, 0);
38}
39
41 void *elt)
42{
43 return (*ptr->ptr_element_linear_entry_frobenius)(*this, elt, 0);
44}
45
46void action::one(void *elt)
47{
48 (*ptr->ptr_element_one)(*this, elt, 0);
49}
50
51int action::is_one(void *elt)
52{
53 return element_is_one(elt, 0);
54 //return (*ptr_element_is_one)(*this, elt, FALSE);
55}
56
57void action::unpack(void *elt, void *Elt)
58{
60 (*ptr->ptr_element_unpack)(*this, elt, Elt, 0);
61}
62
63void action::pack(void *Elt, void *elt)
64{
66 (*ptr->ptr_element_pack)(*this, Elt, elt, 0);
67}
68
69void action::retrieve(void *elt, int hdl)
70{
72 (*ptr->ptr_element_retrieve)(*this, hdl, elt, 0);
73}
74
75int action::store(void *elt)
76{
78 return (*ptr->ptr_element_store)(*this, elt, 0);
79}
80
82 void *a, void *b, void *ab)
83{
85 (*ptr->ptr_element_mult)(*this, a, b, ab, 0);
86}
87
89 void *a, void *b)
90// a := a * b
91{
92 (*ptr->ptr_element_mult)(*this, a, b, elt_mult_apply, 0);
93 (*ptr->ptr_element_move)(*this, elt_mult_apply, a, 0);
94}
95
97 void *a, void *b)
98// b := a * b
99{
100 (*ptr->ptr_element_mult)(*this, a, b, elt_mult_apply, 0);
101 (*ptr->ptr_element_move)(*this, elt_mult_apply, b, 0);
102}
103
104void action::invert(void *a, void *av)
105{
107 (*ptr->ptr_element_invert)(*this, a, av, 0);
108}
109
111{
112 (*ptr->ptr_element_invert)(*this, a, elt_mult_apply, 0);
113 (*ptr->ptr_element_move)(*this, elt_mult_apply, a, 0);
114}
115
116void action::transpose(void *a, void *at)
117{
118 (*ptr->ptr_element_transpose)(*this, a, at, 0);
119}
120
121void action::move(void *a, void *b)
122{
123 (*ptr->ptr_element_move)(*this, a, b, 0);
124}
125
126void action::dispose(int hdl)
127{
128 (*ptr->ptr_element_dispose)(*this, hdl, 0);
129}
130
132 ostream &ost, void *elt)
133{
134 (*ptr->ptr_element_print)(*this, elt, ost);
135}
136
138 ostream &ost, void *elt)
139{
140 (*ptr->ptr_element_print_quick)(*this, elt, ost);
141}
142
144 ostream &ost, void *elt)
145{
147}
148
150 int a, ostream &ost)
151{
152 //cout << "action::print_point" << endl;
153 (*ptr->ptr_print_point)(*this, a, ost);
154}
155
156void action::unrank_point(long int rk, int *v)
157// v[low_level_point_size]
158{
159 if (ptr->ptr_unrank_point == NULL) {
160 cout << "action::unrank_point ptr_unrank_point == NULL, label=" << ptr->label << endl;
161 exit(1);
162 }
163 (*ptr->ptr_unrank_point)(*this, rk, v);
164}
165
166long int action::rank_point(int *v)
167// v[low_level_point_size]
168{
169 if (ptr->ptr_rank_point == NULL) {
170 cout << "action::rank_point ptr_rank_point == NULL, label=" << ptr->label << endl;
171 exit(1);
172 }
173 return (*ptr->ptr_rank_point)(*this, v);
174}
175
177 int *data, void *elt)
178{
179 (*ptr->ptr_element_code_for_make_element)(*this, elt, data);
180}
181
183 ostream &ost, void *elt)
184{
185 (*ptr->ptr_element_print_for_make_element)(*this, elt, ost);
186}
187
189 ostream &ost, void *elt)
190{
192}
193
194
195
196// #############################################################################
197
199 long int a, void *elt, int verbose_level)
200{
201 if (ptr == NULL) {
202 cout << "action::element_image_of ptr == NULL" << endl;
203 exit(1);
204 }
206 return (*ptr->ptr_element_image_of)(*this, a, elt, verbose_level);
207}
208
210 int *input, int *output, void *elt,
211 int verbose_level)
212{
213 if (ptr->ptr_element_image_of_low_level == NULL) {
214 cout << "action::element_image_of_low_level "
215 "ptr is NULL" << endl;
216 exit(1);
217 }
220 *this,
221 input, output, elt, verbose_level);
222}
223
225 void *elt, int verbose_level)
226{
227 (*ptr->ptr_element_one)(*this, elt, verbose_level);
228}
229
231 void *elt,
232 int i, int j, int verbose_level)
233{
235 *this,
236 elt, i, j, verbose_level);
237}
238
240 void *elt,
241 int verbose_level)
242{
244 *this,
245 elt, verbose_level);
246}
247
249 void *elt, int verbose_level)
250{
251 int f_v = (verbose_level >= 1);
252 int ret;
253
254 if (f_v) {
255 cout << "action::element_is_one "
256 "in action " << label << endl;
257 }
258 if (f_has_kernel && Kernel->A->base_len()) {
259 int *Elt1;
260 int drop_out_level, image;
261 Elt1 = NEW_int(elt_size_in_int); // this should be avoided
262 if (f_v) {
263 cout << "action::element_is_one "
264 "before Kernel->strip" << endl;
265 }
266 ret = Kernel->strip((int *)elt, Elt1 /* *residue */,
267 drop_out_level, image, 0 /*verbose_level*/);
268 FREE_int(Elt1);
269 if (f_v) {
270 cout << "action::element_is_one "
271 "returning " << ret << endl;
272 }
273 if (ret)
274 return TRUE;
275 else
276 return FALSE;
277 }
278 ret = (*ptr->ptr_element_is_one)(*this, elt, verbose_level);
279 if (f_v) {
280 cout << "action::element_is_one "
281 "returning " << ret << endl;
282 }
283
284 return ret;
285}
286
288 void *elt, void *Elt, int verbose_level)
289{
291 (*ptr->ptr_element_unpack)(*this, elt, Elt, verbose_level);
292}
293
295 void *Elt, void *elt, int verbose_level)
296{
298 (*ptr->ptr_element_pack)(*this, Elt, elt, verbose_level);
299}
300
302 int hdl, void *elt, int verbose_level)
303{
305 (*ptr->ptr_element_retrieve)(*this, hdl, elt, verbose_level);
306}
307
309 void *elt, int verbose_level)
310{
312 return (*ptr->ptr_element_store)(*this, elt, verbose_level);
313}
314
316 void *a, void *b, void *ab, int verbose_level)
317{
319 (*ptr->ptr_element_mult)(*this, a, b, ab, verbose_level);
320}
321
323 void *a, void *av, int verbose_level)
324{
326 (*ptr->ptr_element_invert)(*this, a, av, verbose_level);
327}
328
330 void *a, void *at, int verbose_level)
331{
332 (*ptr->ptr_element_transpose)(*this, a, at, verbose_level);
333}
334
336 void *a, void *b, int verbose_level)
337{
338 (*ptr->ptr_element_move)(*this, a, b, verbose_level);
339}
340
342 int hdl, int verbose_level)
343{
344 (*ptr->ptr_element_dispose)(*this, hdl, verbose_level);
345}
346
348 void *elt, ostream &ost)
349{
350 (*ptr->ptr_element_print)(*this, elt, ost);
351}
352
354 void *elt, ostream &ost)
355{
356 if (ptr->ptr_element_print_quick == NULL) {
357 cout << "action::element_print_quick "
358 "ptr_element_print_quick == NULL" << endl;
359 exit(1);
360 }
361 (*ptr->ptr_element_print_quick)(*this, elt, ost);
362}
363
365 void *elt, ostream &ost)
366{
367 (*ptr->ptr_element_print_latex)(*this, elt, ost);
368}
369
370void action::element_print_latex_with_extras(void *elt, std::string &label, std::ostream &ost)
371{
372 int *fp, n, ord;
373
374 fp = NEW_int(degree);
375 n = find_fixed_points(elt, fp, 0);
376 //cout << "with " << n << " fixed points" << endl;
377 FREE_int(fp);
378
379 ord = element_order(elt);
380
381 ost << "$$" << label << endl;
382 element_print_latex(elt, ost);
383 ost << "$$" << endl << "of order $" << ord << "$ and with "
384 << n << " fixed points." << endl;
385}
386
387
389 void *elt, std::ostream &ost,
390 void (*point_label)(std::stringstream &sstr, long int pt, void *data),
391 void *point_label_data)
392{
394 *this, elt, ost, point_label, point_label_data);
395}
396
398 void *elt, ostream &ost)
399{
400 (*ptr->ptr_element_print_verbose)(*this, elt, ost);
401}
402
404 void *elt, int *data)
405{
406 (*ptr->ptr_element_code_for_make_element)(*this, elt, data);
407}
408
410 void *elt, ostream &ost)
411{
412 (*ptr->ptr_element_print_for_make_element)(*this, elt, ost);
413}
414
416 void *elt, ostream &ost)
417{
419}
420
422 void *elt, ostream &ost)
423{
425 elt, ost, 0, FALSE, TRUE, 0);
426}
427
429 void *elt,
430 ostream &ost, int verbose_level)
431{
433 ost, 0, FALSE, TRUE, verbose_level);
434}
435
437 void *elt,
438 int *perm, int verbose_level)
439{
440 int f_v = (verbose_level >= 1);
441 int f_vv = (verbose_level >= 2);
442 int i, j;
443
444 if (f_v) {
445 cout << "action::element_as_permutation" << endl;
446 }
447 for (i = 0; i < degree; i++) {
448 if (f_vv) {
449 cout << "action::element_as_permutation" << i << endl;
450 }
451 j = element_image_of(i, elt, verbose_level - 2);
452 perm[i] = j;
453 if (f_vv) {
454 cout << "action::element_as_permutation "
455 << i << "->" << j << endl;
456 }
457 }
458 if (f_v) {
459 cout << "action::element_as_permutation done" << endl;
460 }
461}
462
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)
467{
468 int f_v = (verbose_level >= 1);
469 int f_vv = (verbose_level >= 2);
470 int *v, i, j;
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;
476
477 if (f_v) {
478 cout << "action::element_print_as_permutation_with_offset "
479 "degree=" << degree << endl;
480 }
481 if (degree > 5000) {
482 cout << "action::element_print_as_permutation_with_offset "
483 "the degree is too large, we won't print the permutation" << endl;
484 return;
485 }
486 v = NEW_int(degree);
487 for (i = 0; i < degree; i++) {
488 if (f_vv) {
489 cout << "action::element_print_as_permutation_with_offset "
490 "computing image of " << i << endl;
491 }
492 j = element_image_of(i,
493 elt, verbose_level - 2);
494 if (f_vv) {
495 cout << "action::element_print_as_permutation_with_offset "
496 << i << "->" << j << endl;
497 }
498 v[i] = j;
499 }
500 //perm_print(ost, v, degree);
501 Combi.perm_print_offset(ost, v, degree, offset,
502 f_print_cycles_of_length_one,
503 f_cycle_length,
504 f_max_cycle_length, max_cycle_length,
505 f_orbit_structure,
506 NULL, NULL);
507 //ost << endl;
508 //perm_print_cycles_sorted_by_length(ost, degree, v);
509
510
511#if 0
512 if (degree) {
513 if (f_v) {
514 cout << "action::element_print_as_permutation_with_offset: "
515 "calling perm_print_cycles_sorted_by_length_offset" << endl;
516 }
517 //ost << "perm of degree " << degree << " : ";
518 //int_vec_print_fully(ost, v, degree);
519 //ost << " = ";
520
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,
523 verbose_level);
524 }
525#endif
526
527
528 //ost << endl;
529 FREE_int(v);
530}
531
533 void *elt,
534 ostream &ost, int offset,
535 int max_cycle_length,
536 int f_orbit_structure)
537{
538 int *v, i, j;
539 int f_print_cycles_of_length_one = FALSE;
540 int f_cycle_length = FALSE;
541 int f_max_cycle_length = TRUE;
543
544 v = NEW_int(degree);
545 for (i = 0; i < degree; i++) {
546 j = element_image_of(i, elt, FALSE);
547 v[i] = j;
548 }
549 //perm_print(ost, v, degree);
550 Combi.perm_print_offset(ost, v, degree, offset,
551 f_print_cycles_of_length_one,
552 f_cycle_length,
553 f_max_cycle_length, max_cycle_length, f_orbit_structure,
554 NULL, NULL);
555 FREE_int(v);
556}
557
559 void *elt, int size, long int *set)
560{
561 long int i, j;
562
563 for (i = 0; i < size; i++) {
564 j = element_image_of(set[i], elt, FALSE);
565 cout << i << " -> " << j << endl;
566 }
567}
568
570{
571 int *v;
572 int i, j, sgn;
574
575 v = NEW_int(degree);
576 for (i = 0; i < degree; i++) {
577 j = element_image_of(i, elt, FALSE);
578 v[i] = j;
579 }
580 sgn = Combi.perm_signum(v, degree);
581 FREE_int(v);
582 return sgn;
583}
584
585
586
588 ofstream &fp, int verbose_level)
589{
590 int f_v = (verbose_level >= 1);
591 char *elt;
592
594 if (f_v) {
595 element_print(Elt, cout);
596 Int_vec_print(cout, Elt, elt_size_in_int);
597 cout << endl;
598 }
599 element_pack(Elt, elt, FALSE);
600 fp.write(elt, coded_elt_size_in_char);
601 //fwrite(elt, 1 /* size */, coded_elt_size_in_char /* items */, fp);
602}
603
605 ifstream &fp, int verbose_level)
606{
607 int f_v = (verbose_level >= 1);
608 char *elt;
609
611 fp.read(elt, coded_elt_size_in_char);
612 //fread(elt, 1 /* size */, coded_elt_size_in_char /* items */, fp);
613 element_unpack(elt, Elt, FALSE);
614 if (f_v) {
615 element_print(Elt, cout);
616 Int_vec_print(cout, Elt, elt_size_in_int);
617 cout << endl;
618 }
619}
620
622 std::string &fname, int verbose_level)
623{
624 int f_v = (verbose_level >= 1);
626
627#if 0
628 FILE *f2;
629 f2 = fopen(fname, "wb");
630 element_write_file_fp(Elt, f2, 0/* verbose_level*/);
631 fclose(f2);
632#else
633 {
634 ofstream fp(fname, ios::binary);
635
636 element_write_file_fp(Elt, fp, 0/* verbose_level*/);
637 }
638#endif
639
640 if (f_v) {
641 cout << "written file " << fname << " of size "
642 << Fio.file_size(fname) << endl;
643 }
644}
645
647 std::string &fname, int verbose_level)
648{
649 int f_v = (verbose_level >= 1);
651
652 if (f_v) {
653 cout << "element_read_file: "
654 "reading from file " << fname
655 << " of size " << Fio.file_size(fname) << endl;
656 }
657#if 0
658 FILE *f2;
659 f2 = fopen(fname, "rb");
660 element_read_file_fp(Elt, f2, 0/* verbose_level*/);
661
662 fclose(f2);
663#else
664 {
665 ifstream fp(fname, ios::binary);
666
667 element_read_file_fp(Elt, fp, 0/* verbose_level*/);
668 }
669
670#endif
671}
672
674 orbiter_kernel_system::memory_object *m, int verbose_level)
675{
676 int f_v = (verbose_level >= 1);
677 char *elt;
678
679 if (f_v) {
680 cout << "action::element_write_to_memory_object" << endl;
681 }
683
684 element_pack(Elt, elt, FALSE);
685 m->append(coded_elt_size_in_char, elt, 0);
686}
687
688
690 orbiter_kernel_system::memory_object *m, int verbose_level)
691{
692 int f_v = (verbose_level >= 1);
693 char *elt;
694 int i;
695
696
697 if (f_v) {
698 cout << "action::element_read_from_memory_object" << endl;
699 }
701
702 for (i = 0; i < coded_elt_size_in_char; i++) {
703 m->read_char(elt + i);
704 }
705 element_unpack(elt, Elt, FALSE);
706}
707
709 ofstream &fp, int verbose_level)
710{
711 int f_v = (verbose_level >= 1);
712 char *elt;
713
714 if (f_v) {
715 cout << "action::element_write_to_file_binary" << endl;
716 }
717 if (f_v) {
718 cout << "action::element_write_to_file_binary coded_elt_size_in_char=" << coded_elt_size_in_char << endl;
719 }
720 if (coded_elt_size_in_char == 0) {
721 cout << "action::element_write_to_file_binary "
722 "coded_elt_size_in_char == 0" << endl;
723 exit(1);
724 }
725 //elt = NEW_char(coded_elt_size_in_char);
726 // memory allocation should be avoided in a low-level function
728
729 element_pack(Elt, elt, verbose_level);
730 fp.write(elt, coded_elt_size_in_char);
731 //FREE_char(elt);
732 if (f_v) {
733 cout << "action::element_write_to_file_binary done" << endl;
734 }
735}
736
738 ifstream &fp, int verbose_level)
739{
740 int f_v = (verbose_level >= 1);
741 char *elt;
742
743
744 if (f_v) {
745 cout << "action::element_read_from_file_binary" << endl;
746 }
747 //elt = NEW_char(coded_elt_size_in_char);
748 // memory allocation should be avoided in a low-level function
750
751 if (f_v) {
752 cout << "action::element_read_from_file_binary coded_elt_size_in_char=" << coded_elt_size_in_char << endl;
753 }
754 fp.read(elt, coded_elt_size_in_char);
755 element_unpack(elt, Elt, verbose_level);
756 //FREE_char(elt);
757 if (f_v) {
758 cout << "action::element_read_from_file_binary done" << endl;
759 }
760}
761
762void action::random_element(groups::sims *S, int *Elt, int verbose_level)
763{
764 int f_v = (verbose_level >= 1);
765
766 if (f_v) {
767 cout << "action::random_element" << endl;
768 }
769
770 S->random_element(Elt, verbose_level - 1);
771
772 if (f_v) {
773 cout << "action::random_element done" << endl;
774 }
775}
776
778{
779
780 int f_v = (verbose_level >= 1);
781
782 if (f_v) {
783 cout << "action::all_elements" << endl;
784 }
785
786 if (!f_has_sims) {
787 cout << "action::all_elements !f_has_sims" << endl;
788 exit(1);
789 }
790
792 long int i, goi;
793
794 group_order(go);
795 goi = go.as_int();
796
798 vec->init(this, 0 /*verbose_level*/);
799 vec->allocate(goi, verbose_level);
800
801
802 for (i = 0; i < goi; i++) {
803 Sims->element_unrank_lint(i, vec->ith(i));
804 }
805
806 if (f_v) {
807 cout << "action::all_elements done" << endl;
808 }
809}
810
811
812void action::all_elements_save_csv(std::string &fname, int verbose_level)
813{
814
815 int f_v = (verbose_level >= 1);
817
818 if (f_v) {
819 cout << "action::all_elements_save_csv" << endl;
820 }
821
822 if (!f_has_sims) {
823 cout << "action::all_elements_save_csv !f_has_sims" << endl;
824 exit(1);
825 }
827 int i;
828 int *data;
829 int *Elt;
830
831 all_elements(vec, verbose_level);
833
834
835 {
836 ofstream ost(fname);
837
838 ost << "Row,Element" << endl;
839 for (i = 0; i < vec->len; i++) {
840 Elt = vec->ith(i);
841
843
844 stringstream ss;
846 ost << i << ",\"" << ss.str() << "\"" << endl;
847 }
848 ost << "END" << endl;
849 }
850 if (f_v) {
851 cout << "action::all_elements_save_csv Written file " << fname << " of size " << Fio.file_size(fname) << endl;
852 }
853
854 FREE_OBJECT(vec);
855 FREE_int(data);
856
857 if (f_v) {
858 cout << "action::all_elements_save_csv done" << endl;
859 }
860}
861
862
863
864}}}
865
866
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)
void append(long int length, char *d, int verbose_level)
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
void(* ptr_element_print_for_make_element)(action &A, void *elt, std::ostream &ost)
Definition: actions.h:1113
void(* ptr_element_dispose)(action &A, int hdl, int verbose_level)
Definition: actions.h:1102
int(* ptr_element_linear_entry_frobenius)(action &A, void *elt, int verbose_level)
Definition: actions.h:1091
void(* ptr_unrank_point)(action &A, long int rk, int *v)
Definition: actions.h:1116
void(* ptr_element_transpose)(action &A, void *a, void *at, int verbose_level)
Definition: actions.h:1100
void(* ptr_element_print)(action &A, void *elt, std::ostream &ost)
Definition: actions.h:1103
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)
Definition: actions.h:1106
void(* ptr_element_print_quick)(action &A, void *elt, std::ostream &ost)
Definition: actions.h:1104
int(* ptr_element_linear_entry_ij)(action &A, void *elt, int i, int j, int verbose_level)
Definition: actions.h:1090
void(* ptr_element_unpack)(action &A, void *elt, void *Elt, int verbose_level)
Definition: actions.h:1094
void(* ptr_element_move)(action &A, void *a, void *b, int verbose_level)
Definition: actions.h:1101
void(* ptr_element_image_of_low_level)(action &A, int *input, int *output, void *elt, int verbose_level)
Definition: actions.h:1089
int(* ptr_element_is_one)(action &A, void *elt, int verbose_level)
Definition: actions.h:1093
long int(* ptr_element_image_of)(action &A, long int a, void *elt, int verbose_level)
Definition: actions.h:1088
void(* ptr_element_print_for_make_element_no_commas)(action &A, void *elt, std::ostream &ost)
Definition: actions.h:1114
void(* ptr_print_point)(action &A, long int i, std::ostream &ost)
Definition: actions.h:1111
void(* ptr_element_invert)(action &A, void *a, void *av, int verbose_level)
Definition: actions.h:1099
void(* ptr_element_print_latex)(action &A, void *elt, std::ostream &ost)
Definition: actions.h:1105
void(* ptr_element_one)(action &A, void *elt, int verbose_level)
Definition: actions.h:1092
void(* ptr_element_print_verbose)(action &A, void *elt, std::ostream &ost)
Definition: actions.h:1110
void(* ptr_element_code_for_make_element)(action &A, void *elt, int *data)
Definition: actions.h:1112
void(* ptr_element_retrieve)(action &A, int hdl, void *elt, int verbose_level)
Definition: actions.h:1096
void(* ptr_element_pack)(action &A, void *Elt, void *elt, int verbose_level)
Definition: actions.h:1095
int(* ptr_element_store)(action &A, void *elt, int verbose_level)
Definition: actions.h:1097
void(* ptr_element_mult)(action &A, void *a, void *b, void *ab, int verbose_level)
Definition: actions.h:1098
void print_for_make_element(std::ostream &ost, void *elt)
Definition: action_cb.cpp:182
void element_dispose(int hdl, int verbose_level)
Definition: action_cb.cpp:341
void element_print_latex(void *elt, std::ostream &ost)
Definition: action_cb.cpp:364
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)
Definition: action_cb.cpp:463
void element_unpack(void *elt, void *Elt, int verbose_level)
Definition: action_cb.cpp:287
void element_print_quick(void *elt, std::ostream &ost)
Definition: action_cb.cpp:353
void element_print(void *elt, std::ostream &ost)
Definition: action_cb.cpp:347
void mult(void *a, void *b, void *ab)
Definition: action_cb.cpp:81
void element_pack(void *Elt, void *elt, int verbose_level)
Definition: action_cb.cpp:294
void element_retrieve(int hdl, void *elt, int verbose_level)
Definition: action_cb.cpp:301
void mult_apply_from_the_right(void *a, void *b)
Definition: action_cb.cpp:88
void element_read_from_file_binary(int *Elt, std::ifstream &fp, int verbose_level)
Definition: action_cb.cpp:737
void print_quick(std::ostream &ost, void *elt)
Definition: action_cb.cpp:137
int element_linear_entry_frobenius(void *elt, int verbose_level)
Definition: action_cb.cpp:239
void element_print_latex_with_extras(void *elt, std::string &label, std::ostream &ost)
Definition: action_cb.cpp:370
void element_mult(void *a, void *b, void *ab, int verbose_level)
Definition: action_cb.cpp:315
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)
Definition: action_cb.cpp:532
void code_for_make_element(int *data, void *elt)
Definition: action_cb.cpp:176
void element_read_from_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
Definition: action_cb.cpp:689
void element_write_to_file_binary(int *Elt, std::ofstream &fp, int verbose_level)
Definition: action_cb.cpp:708
int element_is_one(void *elt, int verbose_level)
Definition: action_cb.cpp:248
void mult_apply_from_the_left(void *a, void *b)
Definition: action_cb.cpp:96
void element_print_for_make_element(void *elt, std::ostream &ost)
Definition: action_cb.cpp:409
void random_element(groups::sims *S, int *Elt, int verbose_level)
Definition: action_cb.cpp:762
void image_of_low_level(void *elt, int *input, int *output, int verbose_level)
Definition: action_cb.cpp:23
void element_print_as_permutation_verbose(void *elt, std::ostream &ost, int verbose_level)
Definition: action_cb.cpp:428
void element_code_for_make_element(void *elt, int *data)
Definition: action_cb.cpp:403
void element_invert(void *a, void *av, int verbose_level)
Definition: action_cb.cpp:322
void element_one(void *elt, int verbose_level)
Definition: action_cb.cpp:224
void element_write_file_fp(int *Elt, std::ofstream &fp, int verbose_level)
Definition: action_cb.cpp:587
void element_print_image_of_set(void *elt, int size, long int *set)
Definition: action_cb.cpp:558
void element_read_file_fp(int *Elt, std::ifstream &fp, int verbose_level)
Definition: action_cb.cpp:604
void element_as_permutation(void *elt, int *perm, int verbose_level)
Definition: action_cb.cpp:436
void print_for_make_element_no_commas(std::ostream &ost, void *elt)
Definition: action_cb.cpp:188
void element_read_file(int *Elt, std::string &fname, int verbose_level)
Definition: action_cb.cpp:646
void element_image_of_low_level(int *input, int *output, void *elt, int verbose_level)
Definition: action_cb.cpp:209
void element_move(void *a, void *b, int verbose_level)
Definition: action_cb.cpp:335
void print_point(int a, std::ostream &ost)
Definition: action_cb.cpp:149
int element_linear_entry_ij(void *elt, int i, int j, int verbose_level)
Definition: action_cb.cpp:230
void group_order(ring_theory::longinteger_object &go)
Definition: action.cpp:2223
void all_elements(data_structures_groups::vector_ge *&vec, int verbose_level)
Definition: action_cb.cpp:777
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)
Definition: action_cb.cpp:388
void all_elements_save_csv(std::string &fname, int verbose_level)
Definition: action_cb.cpp:812
void element_write_to_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
Definition: action_cb.cpp:673
int find_fixed_points(void *elt, int *fixed_points, int verbose_level)
Definition: action.cpp:579
void element_print_as_permutation(void *elt, std::ostream &ost)
Definition: action_cb.cpp:421
void element_write_file(int *Elt, std::string &fname, int verbose_level)
Definition: action_cb.cpp:621
void element_transpose(void *a, void *at, int verbose_level)
Definition: action_cb.cpp:329
void element_print_for_make_element_no_commas(void *elt, std::ostream &ost)
Definition: action_cb.cpp:415
void element_print_verbose(void *elt, std::ostream &ost)
Definition: action_cb.cpp:397
long int element_image_of(long int a, void *elt, int verbose_level)
Definition: action_cb.cpp:198
void print(std::ostream &ost, void *elt)
Definition: action_cb.cpp:131
int linear_entry_ij(void *elt, int i, int j)
Definition: action_cb.cpp:34
int element_store(void *elt, int verbose_level)
Definition: action_cb.cpp:308
void print_as_permutation(std::ostream &ost, void *elt)
Definition: action_cb.cpp:143
void init(actions::action *A, int verbose_level)
Definition: vector_ge.cpp:55
a permutation group represented via a stabilizer chain
Definition: groups.h:1273
void random_element(int *elt, int verbose_level)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
Definition: sims.cpp:1326
int strip(int *elt, int *residue, int &drop_out_level, int &image, int verbose_level)
Definition: sims_main.cpp:433
#define FREE_int(p)
Definition: foundations.h:640
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define NEW_int(n)
Definition: foundations.h:625
#define Int_vec_print_str_naked(A, B, C)
Definition: foundations.h:700
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
#define Int_vec_print(A, B, C)
Definition: foundations.h:685
the orbiter library for the classification of combinatorial objects