Orbiter 2022
Combinatorial Objects
action_by_conjugation.cpp
Go to the documentation of this file.
1// action_by_conjugation.cpp
2//
3// Anton Betten
4// January 11, 2009
5
7#include "group_actions.h"
8
9using namespace std;
10
11
12namespace orbiter {
13namespace layer3_group_actions {
14namespace induced_actions {
15
16
18{
19 null();
20}
21
23{
24 free();
25}
26
28{
30 Base_group = NULL;
31 Elt1 = NULL;
32 Elt2 = NULL;
33 Elt3 = NULL;
34}
35
37{
38
39 if (Base_group && f_ownership) {
41 }
42 if (Elt1) {
44 }
45 if (Elt2) {
47 }
48 if (Elt3) {
50 }
51 null();
52}
53
54
56 int f_ownership, int verbose_level)
57{
58 int f_v = (verbose_level >= 1);
61
62 if (f_v) {
63 cout << "action_by_conjugation::init" << endl;
64 }
67 A = Base_group->A;
69 goi = go.as_lint();
70 if (f_v) {
71 cout << "action_by_conjugation::init we are acting "
72 "on a group of order " << goi << endl;
73 }
77 if (f_v) {
78 cout << "action_by_conjugation::init done" << endl;
79 }
80}
81
83 int *Elt, long int i, int verbose_level)
84{
85 int f_v = (verbose_level >= 1);
86 long int j;
87
88 if (f_v) {
89 cout << "action_by_conjugation::compute_image "
90 "i = " << i << endl;
91 }
92 if (i < 0 || i >= goi) {
93 cout << "action_by_conjugation::compute_image "
94 "i = " << i << " out of range" << endl;
95 exit(1);
96 }
97 A->invert(Elt, Elt2);
99 A->mult(Elt2, Elt1, Elt3);
100 A->mult(Elt3, Elt, Elt1);
102 if (f_v) {
103 cout << "action_by_conjugation::compute_image "
104 "image is " << j << endl;
105 }
106 return j;
107}
108
110{
111 long int j;
112
114
115 return j;
116}
117
119 long int i, long int j, int verbose_level)
120{
121 int f_v = (verbose_level >= 1);
122 long int k;
123
124 if (f_v) {
125 cout << "action_by_conjugation::multiply" << endl;
126 }
127 if (i < 0 || i >= goi) {
128 cout << "action_by_conjugation::multiply "
129 "i = " << i << " out of range" << endl;
130 exit(1);
131 }
132 if (j < 0 || j >= goi) {
133 cout << "action_by_conjugation::multiply "
134 "j = " << j << " out of range" << endl;
135 exit(1);
136 }
139 A->mult(Elt1, Elt2, Elt3);
141 if (f_v) {
142 cout << "action_by_conjugation::multiply "
143 "the product is " << k << endl;
144 }
145 return k;
146}
147
148}}}
149
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
a permutation group in a fixed action.
Definition: actions.h:99
void mult(void *a, void *b, void *ab)
Definition: action_cb.cpp:81
a permutation group represented via a stabilizer chain
Definition: groups.h:1273
void group_order(ring_theory::longinteger_object &go)
Definition: sims.cpp:951
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
Definition: sims.cpp:1326
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
long int multiply(actions::action *A, long int i, long int j, int verbose_level)
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
#define FREE_int(p)
Definition: foundations.h:640
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define NEW_int(n)
Definition: foundations.h:625
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects