Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

563642 views
1
/*
2
* DON'T mangle private and public data, don't include this file if
3
* _ZZ_H is defined, i.e. ZZ.h has already been included
4
*/
5
#if !defined(_ZZ_P_H) && !defined(_ZZ_H)
6
#define _ZZ_P_H
7
8
#include <stdio.h>
9
#include <math.h>
10
#include <string.h>
11
#include "typedef.h"
12
#include "matrix.h"
13
#include "tools.h"
14
#include "symm.h"
15
#include "getput.h"
16
17
#define ZZ_PRIVATE
18
19
/*
20
* this is for the actual implementation. Users won't get much more than
21
* the prototype for the function ZZ()
22
*/
23
24
/*{{{ typedef, private types. */
25
typedef struct {
26
int low, hi;
27
} ZZ_prod_t;
28
29
typedef struct ZZ_couple ZZ_couple_t;
30
typedef struct ZZ_node ZZ_node_t;
31
32
struct ZZ_couple {
33
ZZ_node_t *he;
34
struct {int i, j; } she;
35
long factor;
36
ZZ_couple_t *elder;
37
};
38
39
struct ZZ_node {
40
int number, level, anz_tg;
41
int **k_vec;
42
ZZ_prod_t *path;
43
long index;
44
matrix_TYP *U, *U_inv, *el_div;
45
matrix_TYP *Q; /* Q = Uvor^{-tr} * U^{tr} with U_vor = (U bevore scal_pr in
46
ZZ_ins_node) */
47
ZZ_node_t *next;
48
ZZ_couple_t *parent, *child;
49
bravais_TYP *group; /* the groups representation on lattice U */
50
bravais_TYP *col_group; /* transposed of group */
51
bravais_TYP *brav; /* bravais group of col_group */
52
bahn **stab_chain; /* a stabilizer chain for col_group */
53
matrix_TYP ***N_orbits;
54
int *N_lengths;
55
int N_no_orbits;
56
voronoi_TYP **perfect;
57
int perfect_no;
58
};
59
60
/*--------------------------------------------------------------------*\
61
| r = #generators k = #primes |
62
| p[i] = i-th prime number s[i] = #constituents for i-th prime |
63
| n[i][j] = #rows of j-th constituent for i-th prime |
64
| Delta[i][j][k] = j-th constituent for i-th prime k-th generator |
65
| Endo [i][j] = endomorphisms for Delta[i][j] and all generators |
66
| EnCo [i][j] = # endomorphisms for Delta[i][j] " " " |
67
| VK[i] = Vielfachheitenvektor der Konstituenten zur i-ten Primzahl |
68
\*--------------------------------------------------------------------*/
69
70
typedef struct {
71
int k;
72
int *s, *p;
73
matrix_TYP ****Delta;
74
} ZZ_prime_constituents_t;
75
76
typedef struct {
77
ZZ_prime_constituents_t p_consts;
78
int N, r;
79
int **n;
80
ZZ_prod_t **EnCo;
81
matrix_TYP **DELTA_M, **DELTA;
82
matrix_TYP **epi_base, *epi;
83
matrix_TYP ****Endo;
84
int **VK;
85
} ZZ_data_t;
86
87
88
89
typedef struct {
90
ZZ_node_t *root, *last;
91
int node_count;
92
} ZZ_tree_t;
93
94
95
96
typedef struct {
97
ZZ_data_t *data;
98
ZZ_tree_t *tree;
99
} ZZ_super_TYP;
100
101
102
103
/*{{{ global variables */
104
extern boolean QUIET;
105
extern boolean TEMPORAER;
106
extern boolean SHORTLIST;
107
extern boolean NURUMF;
108
extern boolean U_option;
109
extern boolean G_option;
110
extern boolean LLLREDUCED;
111
extern boolean GRAPH;
112
extern int COUNTER;
113
extern int NUMBER;
114
extern int ABBRUCH;
115
extern int ZCLASS;
116
extern int SUBDIRECT;
117
extern int LEVEL;
118
extern FILE *ZZ_temp;
119
extern FILE *ZZ_list;
120
extern int MAT_ALLOC;
121
extern int constituents;
122
extern int verbose;
123
124
extern int IDEM_NO;
125
/*}}} */
126
127
#if defined(__STDC__)
128
#define _ZZ_P_PROTO_( args ) args
129
#else
130
#define _ZZ_P_PROTO_( args ) ()
131
#endif
132
133
extern void ZZ_transpose_array _ZZ_P_PROTO_((int **array, int size));
134
135
extern void ZZ_intern _ZZ_P_PROTO_((matrix_TYP * Gram,
136
ZZ_data_t * data,
137
ZZ_tree_t * tree,
138
QtoZ_TYP * inzidenz)) ;
139
extern void *ZZ _ZZ_P_PROTO_((bravais_TYP * group,
140
matrix_TYP * gram,
141
int *divisors,
142
QtoZ_TYP *inzidenz,
143
char *options,
144
FILE *putputfile,
145
int super_nr,
146
int konst_flag)) ;
147
148
extern bravais_TYP **get_groups _ZZ_P_PROTO_((bravais_TYP **ADGROUPS,
149
int ad_no,
150
int *number)) ;
151
152
#endif /* _ZZ_P_H */
153
154
155