17namespace layer3_group_actions {
26static long int wreath_product_group_element_image_of(action &A,
long int a,
27 void *elt,
int verbose_level);
28static void wreath_product_group_element_image_of_low_level(action &A,
29 int *input,
int *output,
void *elt,
int verbose_level);
30static int wreath_product_group_element_linear_entry_ij(action &A,
31 void *elt,
int i,
int j,
int verbose_level);
32static int wreath_product_group_element_linear_entry_frobenius(action &A,
33 void *elt,
int verbose_level);
34static void wreath_product_group_element_one(action &A,
35 void *elt,
int verbose_level);
36static int wreath_product_group_element_is_one(action &A,
37 void *elt,
int verbose_level);
38static void wreath_product_group_element_unpack(action &A,
39 void *elt,
void *Elt,
int verbose_level);
40static void wreath_product_group_element_pack(action &A,
41 void *Elt,
void *elt,
int verbose_level);
42static void wreath_product_group_element_retrieve(action &A,
43 int hdl,
void *elt,
int verbose_level);
44static int wreath_product_group_element_store(action &A,
45 void *elt,
int verbose_level);
46static void wreath_product_group_element_mult(action &A,
47 void *a,
void *b,
void *ab,
int verbose_level);
48static void wreath_product_group_element_invert(action &A,
49 void *a,
void *av,
int verbose_level);
50static void wreath_product_group_element_transpose(action &A,
51 void *a,
void *at,
int verbose_level);
52static void wreath_product_group_element_move(action &A,
53 void *a,
void *b,
int verbose_level);
54static void wreath_product_group_element_dispose(action &A,
55 int hdl,
int verbose_level);
56static void wreath_product_group_element_print(action &A,
57 void *elt, std::ostream &ost);
58static void wreath_product_group_element_code_for_make_element(
59 action &A,
void *elt,
int *data);
60static void wreath_product_group_element_print_for_make_element(
61 action &A,
void *elt, std::ostream &ost);
62static void wreath_product_group_element_print_for_make_element_no_commas(
63 action &A,
void *elt, std::ostream &ost);
64static void wreath_product_group_element_print_quick(action &A,
65 void *elt, std::ostream &ost);
66static void wreath_product_group_element_print_latex(action &A,
67 void *elt, std::ostream &ost);
68static void wreath_product_group_element_print_latex_with_print_point_function(
70 void *elt, std::ostream &ost,
71 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
72 void *point_label_data);
73static void wreath_product_group_element_print_verbose(action &A,
74 void *elt, std::ostream &ost);
75static void wreath_product_group_print_point(action &A,
76 long int a, std::ostream &ost);
77static void wreath_product_group_unrank_point(action &A,
long int rk,
int *v);
78static long int wreath_product_group_rank_point(action &A,
int *v);
83 label.assign(
"function_pointers_wreath_product_group");
86 wreath_product_group_element_image_of_low_level;
89 wreath_product_group_element_linear_entry_frobenius;
105 wreath_product_group_element_print_latex_with_print_point_function;
108 wreath_product_group_element_code_for_make_element;
110 wreath_product_group_element_print_for_make_element;
112 wreath_product_group_element_print_for_make_element_no_commas;
120static long int wreath_product_group_element_image_of(
action &A,
121 long int a,
void *elt,
int verbose_level)
123 int f_v = (verbose_level >= 1);
125 int *Elt = (
int *) elt;
129 cout <<
"wreath_product_group_element_image_of "
130 "computing image of " << a << endl;
131 cout <<
"verbose_level = " << verbose_level << endl;
136 cout <<
"wreath_product_group_element_image_of "
137 "image of " << a <<
" is " << b << endl;
142static void wreath_product_group_element_image_of_low_level(action &A,
143 int *input,
int *output,
void *elt,
int verbose_level)
145 int f_v = (verbose_level >= 1);
146 groups::wreath_product &W = *A.G.wreath_product_group;
147 int *Elt = (
int *) elt;
151 cout <<
"wreath_product_group_element_image_of_low_level "
152 "computing image of ";
156 W.element_image_of_low_level(Elt, input, output, verbose_level - 1);
159 cout <<
"wreath_product_group_element_image_of_low_level "
166static int wreath_product_group_element_linear_entry_ij(action &A,
167 void *elt,
int i,
int j,
int verbose_level)
174 cout <<
"wreath_product_group_element_linear_entry_ij "
175 "not yet implemented" << endl;
179static int wreath_product_group_element_linear_entry_frobenius(action &A,
180 void *elt,
int verbose_level)
187 cout <<
"wreath_product_group_element_linear_entry_frobenius "
188 "not yet implemented" << endl;
192static void wreath_product_group_element_one(action &A,
193 void *elt,
int verbose_level)
195 int f_v = (verbose_level >= 1);
196 groups::wreath_product &W = *A.G.wreath_product_group;
197 int *Elt = (
int *) elt;
200 cout <<
"wreath_product_group_element_one "
201 "calling element_one" << endl;
206static int wreath_product_group_element_is_one(action &A,
207 void *elt,
int verbose_level)
209 int f_v = (verbose_level >= 1);
210 groups::wreath_product &W = *A.G.wreath_product_group;
211 int *Elt = (
int *) elt;
215 cout <<
"wreath_product_group_element_one calling "
216 "element_is_one" << endl;
218 ret = W.element_is_one(Elt);
221 cout <<
"wreath_product_group_element_is_one "
222 "returns YES" << endl;
225 cout <<
"wreath_product_group_element_is_one "
226 "returns NO" << endl;
232static void wreath_product_group_element_unpack(action &A,
233 void *elt,
void *Elt,
int verbose_level)
235 int f_v = (verbose_level >= 1);
236 groups::wreath_product &W = *A.G.wreath_product_group;
237 int *Elt1 = (
int *) Elt;
241 cout <<
"wreath_product_group_element_unpack" << endl;
243 W.element_unpack(elt1, Elt1);
246static void wreath_product_group_element_pack(action &A,
247 void *Elt,
void *elt,
int verbose_level)
249 int f_v = (verbose_level >= 1);
250 groups::wreath_product &W = *A.G.wreath_product_group;
251 int *Elt1 = (
int *) Elt;
255 cout <<
"wreath_product_group_element_pack" << endl;
257 W.element_pack(Elt1, elt1);
260static void wreath_product_group_element_retrieve(action &A,
261 int hdl,
void *elt,
int verbose_level)
263 int f_v = (verbose_level >= 1);
264 groups::wreath_product &W = *A.G.wreath_product_group;
265 int *Elt = (
int *) elt;
269 cout <<
"wreath_product_group_element_"
270 "retrieve hdl = " << hdl << endl;
272 p_elt = W.Elts->s_i(hdl);
276 W.element_unpack(p_elt, Elt);
278 W.element_print_easy(Elt, cout);
282static int wreath_product_group_element_store(action &A,
283 void *elt,
int verbose_level)
285 int f_v = (verbose_level >= 1);
286 groups::wreath_product &W = *A.G.wreath_product_group;
287 int *Elt = (
int *) elt;
291 cout <<
"wreath_product_group_element_store" << endl;
293 W.element_pack(Elt, W.elt1);
294 hdl = W.Elts->store(W.elt1);
296 cout <<
"wreath_product_group_element_store "
297 "hdl = " << hdl << endl;
302static void wreath_product_group_element_mult(action &A,
303 void *a,
void *b,
void *ab,
int verbose_level)
305 int f_v = (verbose_level >= 1);
306 int f_vv = (verbose_level >= 2);
307 groups::wreath_product &W = *A.G.wreath_product_group;
310 int *AB = (
int *) ab;
313 cout <<
"wreath_product_group_element_mult" << endl;
316 cout <<
"A=" << endl;
317 W.element_print_easy(AA, cout);
318 cout <<
"B=" << endl;
319 W.element_print_easy(BB, cout);
321 W.element_mult(AA, BB, AB, verbose_level - 2);
323 cout <<
"wreath_product_group_element_mult done" << endl;
326 cout <<
"AB=" << endl;
327 W.element_print_easy(AB, cout);
331static void wreath_product_group_element_invert(action &A,
332 void *a,
void *av,
int verbose_level)
334 int f_v = (verbose_level >= 1);
335 int f_vv = (verbose_level >= 2);
336 groups::wreath_product &W = *A.G.wreath_product_group;
338 int *AAv = (
int *) av;
341 cout <<
"wreath_product_group_element_invert" << endl;
344 cout <<
"A=" << endl;
345 W.element_print_easy(AA, cout);
347 W.element_invert(AA, AAv, verbose_level - 1);
349 cout <<
"wreath_product_group_element_invert done" << endl;
352 cout <<
"Av=" << endl;
353 W.element_print_easy(AAv, cout);
357static void wreath_product_group_element_transpose(action &A,
358 void *a,
void *at,
int verbose_level)
366 cout <<
"wreath_product_group_element_transpose "
367 "not yet implemented" << endl;
371static void wreath_product_group_element_move(action &A,
372 void *a,
void *b,
int verbose_level)
374 int f_v = (verbose_level >= 1);
375 groups::wreath_product &W = *A.G.wreath_product_group;
380 cout <<
"wreath_product_group_element_move" << endl;
382 W.element_move(AA, BB, 0 );
385static void wreath_product_group_element_dispose(action &A,
386 int hdl,
int verbose_level)
388 int f_v = (verbose_level >= 1);
389 groups::wreath_product &W = *A.G.wreath_product_group;
392 cout <<
"wreath_product_group_element_dispose "
393 "hdl = " << hdl << endl;
395 W.Elts->dispose(hdl);
398static void wreath_product_group_element_print(action &A,
399 void *elt, ostream &ost)
401 groups::wreath_product &W = *A.G.wreath_product_group;
402 int *Elt = (
int *) elt;
405 W.element_print_easy(Elt, ost);
409static void wreath_product_group_element_code_for_make_element(action &A,
410 void *elt,
int *data)
415 cout <<
"wreath_product_group_element_code_for_make_element "
416 "not yet implemented" << endl;
421 W.element_code_for_make_element(Elt, data);
427static void wreath_product_group_element_print_for_make_element(action &A,
428 void *elt, ostream &ost)
430 groups::wreath_product &W = *A.G.wreath_product_group;
431 int *Elt = (
int *) elt;
433 W.element_print_for_make_element(Elt, ost);
436static void wreath_product_group_element_print_for_make_element_no_commas(
437 action &A,
void *elt, ostream &ost)
439 groups::wreath_product &W = *A.G.wreath_product_group;
440 int *Elt = (
int *) elt;
442 W.element_print_for_make_element(Elt, ost);
445static void wreath_product_group_element_print_quick(
446 action &A,
void *elt, ostream &ost)
448 groups::wreath_product &W = *A.G.wreath_product_group;
449 int *Elt = (
int *) elt;
452 W.element_print_easy(Elt, ost);
455static void wreath_product_group_element_print_latex(
456 action &A,
void *elt, ostream &ost)
458 groups::wreath_product &W = *A.G.wreath_product_group;
459 int *Elt = (
int *) elt;
461 W.element_print_latex(Elt, ost);
464static void wreath_product_group_element_print_latex_with_print_point_function(
466 void *elt, std::ostream &ost,
467 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
468 void *point_label_data)
470 cout <<
"wreath_product_group_element_print_latex_with_print_point_function "
471 "not yet implemented" << endl;
475static void wreath_product_group_element_print_verbose(
476 action &A,
void *elt, ostream &ost)
478 groups::wreath_product &W = *A.G.wreath_product_group;
479 int *Elt = (
int *) elt;
481 W.element_print_easy(Elt, ost);
485static void wreath_product_group_print_point(action &A,
long int a, ostream &ost)
489 cout <<
"wreath_product_group_print_point "
490 "not yet implemented" << endl;
495static void wreath_product_group_unrank_point(action &A,
long int rk,
int *v)
501 groups::wreath_product *W;
502 W = A.G.wreath_product_group;
504 W->unrank_point(rk, v, 0 );
509 cout <<
"wreath_product_group_unrank_point type_G unknown:: type_G = ";
510 AG.action_print_symmetry_group_type(cout, A.type_G);
517static long int wreath_product_group_rank_point(action &A,
int *v)
524 groups::wreath_product *W;
525 W = A.G.wreath_product_group;
527 rk = W->rank_point(v, 0 );
530 cout <<
"wreath_product_group_rank_point type_G unknown:: type_G = ";
531 AG.action_print_symmetry_group_type(cout, A.type_G);
long int(* ptr_rank_point)(action &A, int *v)
void(* ptr_element_print_for_make_element)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_dispose)(action &A, int hdl, int verbose_level)
int(* ptr_element_linear_entry_frobenius)(action &A, void *elt, int verbose_level)
void(* ptr_unrank_point)(action &A, long int rk, int *v)
void(* ptr_element_transpose)(action &A, void *a, void *at, int verbose_level)
void init_function_pointers_wreath_product_group()
void(* ptr_element_print)(action &A, void *elt, std::ostream &ost)
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)
void(* ptr_element_print_quick)(action &A, void *elt, std::ostream &ost)
int(* ptr_element_linear_entry_ij)(action &A, void *elt, int i, int j, int verbose_level)
void(* ptr_element_unpack)(action &A, void *elt, void *Elt, int verbose_level)
void(* ptr_element_move)(action &A, void *a, void *b, int verbose_level)
void(* ptr_element_image_of_low_level)(action &A, int *input, int *output, void *elt, int verbose_level)
int(* ptr_element_is_one)(action &A, void *elt, int verbose_level)
long int(* ptr_element_image_of)(action &A, long int a, void *elt, int verbose_level)
void(* ptr_element_print_for_make_element_no_commas)(action &A, void *elt, std::ostream &ost)
void(* ptr_print_point)(action &A, long int i, std::ostream &ost)
void(* ptr_element_invert)(action &A, void *a, void *av, int verbose_level)
void(* ptr_element_print_latex)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_one)(action &A, void *elt, int verbose_level)
void(* ptr_element_print_verbose)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_code_for_make_element)(action &A, void *elt, int *data)
void(* ptr_element_retrieve)(action &A, int hdl, void *elt, int verbose_level)
void(* ptr_element_pack)(action &A, void *Elt, void *elt, int verbose_level)
int(* ptr_element_store)(action &A, void *elt, int verbose_level)
void(* ptr_element_mult)(action &A, void *a, void *b, void *ab, int verbose_level)
a permutation group in a fixed action.
the wreath product group GL(d,q) wreath Sym(n)
long int element_image_of(int *Elt, long int a, int verbose_level)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects
groups::wreath_product * wreath_product_group