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

563603 views
1
/* some definitions of constants */
2
3
/* the maximal entry in the short vectors should not exceed MAXENTRY to
4
avoid overflow */
5
#define MAXENTRY 10000
6
/* it is checked that the product of the maximal entry in the short vectors
7
and the maximal entry in the products of Gram-matrices with short vectors
8
does not exceed MAXNORM, since the program works just with int's */
9
#define MAXNORM 100000000
10
#define STRLEN 80
11
/* since the LLL-reduction works with a floating-point model, there might be
12
some rounding error, which should not reach EPS */
13
#define EPS 0.001
14
/* the constant for the LLL-condition, which should be < 1, but 0.75 is the
15
standard value, a higher value might yield a slightly better result but
16
increases the running time */
17
#define LLL_CONST 0.75
18
#define DEF_PRIME 16001
19
20
21
/* structure to hold the generators of the group according to the stabilizer
22
chain */
23
typedef struct {
24
int dim;
25
int *ord;
26
int *ng;
27
int *nsg;
28
int ****g;
29
} group;
30
31
/* structure for a list of vectors */
32
typedef struct {
33
int dim;
34
int len;
35
int prime;
36
int n;
37
int **v;
38
} veclist;
39
40
/* structure for the invariant forms and their products with the list of
41
short vectors */
42
typedef struct {
43
int dim;
44
int n;
45
int ***A;
46
int ***v;
47
} invar;
48
49
/* structure for the diagonal of the fingerprint, the new order and the indices
50
of the standard-base in the list of short vectors */
51
typedef struct {
52
int *diag;
53
int *per;
54
int *e;
55
} fpstruct;
56
57
/* structure for the scalar product combinations, the transformation matrices
58
between the vector sums and that lattice bases and the scalar products of
59
the lattice bases */
60
typedef struct {
61
veclist list;
62
int rank;
63
int **trans;
64
int **coef;
65
int ***F;
66
} scpcomb;
67
68
/* structure for a Bacher-polynomial */
69
typedef struct {
70
int mind;
71
int maxd;
72
int sum;
73
int *coef;
74
} bachpol;
75
76
/* structure for the option flags */
77
typedef struct {
78
int DEPTH;
79
int STAB;
80
int BACH[3];
81
int BACHDEP;
82
int BACHSCP;
83
int GEN;
84
int PRINT;
85
} flagstruct;
86
87
/* functions in auttools.c */
88
static int cand();
89
static void autom();
90
static int aut();
91
92
/* functions in bachtools.c */
93
static void bacher();
94
static int bachcomp();
95
static void fputbach();
96
97
/* functions in iotools.c */
98
static void getflags();
99
static bravais_TYP *putgens();
100
static void putord();
101
static matrix_TYP *putiso();
102
103
/* functions in isotools.c */
104
static int isocand();
105
static matrix_TYP *bs_isometry();
106
static int iso();
107
static int isostab();
108
109
/* functions in lattools.c */
110
static int lll();
111
static void initialize();
112
static int red();
113
static void check();
114
static void decrease();
115
static void interchange();
116
static int iround();
117
118
/* functions in mattools.c */
119
static void vecmatmul();
120
static void matmul();
121
static int scp();
122
static int sscp();
123
static void psolve();
124
static void pgauss();
125
static int isprime();
126
127
/* functions in orbtools.c */
128
static int operate();
129
static int orbit();
130
static int orbitlen();
131
static int delete();
132
static void stab();
133
static void matgen();
134
static void stabil();
135
136
/* functions in preproc.c */
137
static void checkvecs();
138
static int checkgen();
139
static void fingerprint();
140
static int possible();
141
static void scpvector();
142
static void scpvecs();
143
static void base();
144
static void coef();
145
static void scpforms();
146
147
/* functions in sorttools.c */
148
static int comp();
149
static int numberof();
150
static void sortvecs();
151
static void quicksort();
152
153
/* functions in perfecttools.c */
154
static int normal_aut_test();
155
156