Orbiter 2022
Combinatorial Objects
spread_create.cpp
Go to the documentation of this file.
1// spread_create.cpp
2//
3// Anton Betten
4//
5// March 22, 2018
6//
7//
8//
9//
10//
11
12#include "orbiter.h"
13
14using namespace std;
15
16namespace orbiter {
17namespace layer5_applications {
18namespace spreads {
19
20
22{
23 null();
24}
25
27{
28 freeself();
29}
30
32{
33 F = NULL;
34 A = NULL;
35 set = NULL;
37 Sg = NULL;
38}
39
41{
42 if (F) {
44 }
45 if (set) {
47 }
48 if (Sg) {
50 }
51 null();
52}
53
54void spread_create::init(spread_create_description *Descr, int verbose_level)
55{
56 int f_v = (verbose_level >= 1);
58
59
60 if (f_v) {
61 cout << "spread_create::init" << endl;
62 }
64 if (!Descr->f_q) {
65 cout << "spread_create::init !Descr->f_q" << endl;
66 exit(1);
67 }
68 q = Descr->q;
69 if (!Descr->f_k) {
70 cout << "spread_create::init !Descr->f_k" << endl;
71 exit(1);
72 }
73 k = Descr->k;
74 if (f_v) {
75 cout << "spread_create::init q = " << q << endl;
76 cout << "spread_create::init k = " << k << endl;
77 }
79 F->finite_field_init(q, FALSE /* f_without_tables */, 0);
80
81
82
83 if (NT.is_prime(q)) {
85 }
86 else {
88 }
89
90
92
93
94
95 if (Descr->f_family) {
96 if (f_v) {
97 cout << "spread_create::init "
98 "before Surf->create_surface_family "
99 "family_name=" << Descr->family_name << endl;
100 }
101
102
103 }
104
105
106
107 else if (Descr->f_catalogue) {
108
109 if (f_v) {
110 cout << "spread_create::init "
111 "spread from catalogue" << endl;
112 }
113 int nb_iso;
115
116 nb_iso = K.Spread_nb_reps(q, k);
117 if (Descr->iso >= nb_iso) {
118 cout << "spread_create::init "
119 "iso >= nb_iso, this spread does not exist" << endl;
120 exit(1);
121 }
122
123 long int *rep;
124
125 rep = K.Spread_representative(q, k, Descr->iso, sz);
126 set = NEW_lint(sz);
127 Lint_vec_copy(rep, set, sz);
128
130
131 if (f_v) {
132 cout << "spread_create::init "
133 "before Sg->stabilizer_of_spread_from_catalogue" << endl;
134 }
135
137 q, k, Descr->iso,
138 verbose_level);
140
141 char str[1000];
142
143 sprintf(str, "catalogue_q%d_k%d_%d", q, k, Descr->iso);
144 prefix.assign(str);
145 sprintf(str, "catalogue_q%d_k%d_%d", q, k, Descr->iso);
146 label_txt.assign(str);
147 sprintf(str, "catalogue\\_q%d\\_k%d\\_%d", q, k, Descr->iso);
148 label_tex.assign(str);
149 if (f_v) {
150 cout << "spread_create::init "
151 "after Sg->stabilizer_of_spread_from_catalogue" << endl;
152 }
153 }
154 else {
155 cout << "spread_create::init we do not "
156 "recognize the type of spread" << endl;
157 exit(1);
158 }
159
160
161 if (f_v) {
162 cout << "spread_create::init set = ";
163 Lint_vec_print(cout, set, sz);
164 cout << endl;
165 }
166
167 if (f_has_group) {
168 cout << "spread_create::init the stabilizer is:" << endl;
170 }
171
172
173
174 if (f_v) {
175 cout << "spread_create::init done" << endl;
176 }
177}
178
180 std::vector<std::string> transform_coeffs,
181 std::vector<int> f_inverse_transform, int verbose_level)
182{
183 int f_v = (verbose_level >= 1);
184
185 if (f_v) {
186 cout << "spread_create::apply_transformations done" << endl;
187 }
188}
189
190}}}
191
void finite_field_init(int q, int f_without_tables, int verbose_level)
provides access to pre-computed combinatorial data in encoded form
long int * Spread_representative(int q, int k, int i, int &sz)
a permutation group in a fixed action.
Definition: actions.h:99
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
void stabilizer_of_spread_from_catalogue(actions::action *A, int q, int k, int iso, int verbose_level)
to describe the construction of a known spread from the command line
Definition: spreads.h:264
void init(spread_create_description *Descr, int verbose_level)
void apply_transformations(std::vector< std::string > transform_coeffs, std::vector< int > f_inverse_transform, int verbose_level)
#define Lint_vec_copy(A, B, C)
Definition: foundations.h:694
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define Lint_vec_print(A, B, C)
Definition: foundations.h:686
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
#define FREE_lint(p)
Definition: foundations.h:642
#define NEW_lint(n)
Definition: foundations.h:628
the orbiter library for the classification of combinatorial objects