Orbiter 2022
Combinatorial Objects
action_on_galois_group.cpp
Go to the documentation of this file.
1/*
2 * action_on_galois_group.cpp
3 *
4 * Created on: Mar 23, 2019
5 * Author: betten
6 */
7
8
9
11#include "group_actions.h"
12
13using namespace std;
14
15
16namespace orbiter {
17namespace layer3_group_actions {
18namespace induced_actions {
19
20
22{
23 null();
24}
25
27{
28 free();
29}
30
32{
33 M = NULL;
34}
35
37{
38
39 null();
40}
41
42
44 int m, int verbose_level)
45{
46 int f_v = (verbose_level >= 1);
48
49 if (f_v) {
50 cout << "action_on_galois_group::init" << endl;
51 cout << "m=" << m << endl;
52 }
55 if (A->type_G != matrix_group_t) {
56 cout << "action_on_galois_group::init action "
57 "not of matrix group type" << endl;
58 exit(1);
59 }
60 M = A->G.matrix_grp;
61 if (M->f_semilinear == FALSE) {
62 cout << "action_on_galois_group::init "
63 "M->f_semilinear == FALSE" << endl;
64 exit(1);
65 }
66 q = M->GFq->q;
67 degree = M->GFq->e;
68 if (f_v) {
69 cout << "degree=" << degree << endl;
70 }
71
72 if (f_v) {
73 cout << "action_on_galois_group::init "
74 "field order is " << q << endl;
75 }
76}
77
79 int *Elt, long int i, int verbose_level)
80{
81 //verbose_level = 1;
82 int f_v = (verbose_level >= 1);
83 long int a, b, j;
84
85 if (f_v) {
86 cout << "action_on_galois_group::compute_image "
87 "i = " << i << endl;
88 }
89 if (i < 0 || i >= degree) {
90 cout << "action_on_galois_group::compute_image "
91 "i = " << i << " out of range" << endl;
92 exit(1);
93 }
94
95 a = A->linear_entry_frobenius(Elt);
96 b = i + a;
97 j = b % degree;
98
99 if (f_v) {
100 cout << "action_on_galois_group::compute_image "
101 "image of " << i << " is " << j << endl;
102 }
103 return j;
104}
105
106}}}
107
108
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
a permutation group in a fixed action.
Definition: actions.h:99
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects