GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
/*1* DON'T mangle private and public data, don't include this file if2* _ZZ_H is defined, i.e. ZZ.h has already been included3*/4#if !defined(_ZZ_P_H) && !defined(_ZZ_H)5#define _ZZ_P_H67#include <stdio.h>8#include <math.h>9#include <string.h>10#include "typedef.h"11#include "matrix.h"12#include "tools.h"13#include "symm.h"14#include "getput.h"1516#define ZZ_PRIVATE1718/*19* this is for the actual implementation. Users won't get much more than20* the prototype for the function ZZ()21*/2223/*{{{ typedef, private types. */24typedef struct {25int low, hi;26} ZZ_prod_t;2728typedef struct ZZ_couple ZZ_couple_t;29typedef struct ZZ_node ZZ_node_t;3031struct ZZ_couple {32ZZ_node_t *he;33struct {int i, j; } she;34long factor;35ZZ_couple_t *elder;36};3738struct ZZ_node {39int number, level, anz_tg;40int **k_vec;41ZZ_prod_t *path;42long index;43matrix_TYP *U, *U_inv, *el_div;44matrix_TYP *Q; /* Q = Uvor^{-tr} * U^{tr} with U_vor = (U bevore scal_pr in45ZZ_ins_node) */46ZZ_node_t *next;47ZZ_couple_t *parent, *child;48bravais_TYP *group; /* the groups representation on lattice U */49bravais_TYP *col_group; /* transposed of group */50bravais_TYP *brav; /* bravais group of col_group */51bahn **stab_chain; /* a stabilizer chain for col_group */52matrix_TYP ***N_orbits;53int *N_lengths;54int N_no_orbits;55voronoi_TYP **perfect;56int perfect_no;57};5859/*--------------------------------------------------------------------*\60| r = #generators k = #primes |61| p[i] = i-th prime number s[i] = #constituents for i-th prime |62| n[i][j] = #rows of j-th constituent for i-th prime |63| Delta[i][j][k] = j-th constituent for i-th prime k-th generator |64| Endo [i][j] = endomorphisms for Delta[i][j] and all generators |65| EnCo [i][j] = # endomorphisms for Delta[i][j] " " " |66| VK[i] = Vielfachheitenvektor der Konstituenten zur i-ten Primzahl |67\*--------------------------------------------------------------------*/6869typedef struct {70int k;71int *s, *p;72matrix_TYP ****Delta;73} ZZ_prime_constituents_t;7475typedef struct {76ZZ_prime_constituents_t p_consts;77int N, r;78int **n;79ZZ_prod_t **EnCo;80matrix_TYP **DELTA_M, **DELTA;81matrix_TYP **epi_base, *epi;82matrix_TYP ****Endo;83int **VK;84} ZZ_data_t;85868788typedef struct {89ZZ_node_t *root, *last;90int node_count;91} ZZ_tree_t;92939495typedef struct {96ZZ_data_t *data;97ZZ_tree_t *tree;98} ZZ_super_TYP;99100101102/*{{{ global variables */103extern boolean QUIET;104extern boolean TEMPORAER;105extern boolean SHORTLIST;106extern boolean NURUMF;107extern boolean U_option;108extern boolean G_option;109extern boolean LLLREDUCED;110extern boolean GRAPH;111extern int COUNTER;112extern int NUMBER;113extern int ABBRUCH;114extern int ZCLASS;115extern int SUBDIRECT;116extern int LEVEL;117extern FILE *ZZ_temp;118extern FILE *ZZ_list;119extern int MAT_ALLOC;120extern int constituents;121extern int verbose;122123extern int IDEM_NO;124/*}}} */125126#if defined(__STDC__)127#define _ZZ_P_PROTO_( args ) args128#else129#define _ZZ_P_PROTO_( args ) ()130#endif131132extern void ZZ_transpose_array _ZZ_P_PROTO_((int **array, int size));133134extern void ZZ_intern _ZZ_P_PROTO_((matrix_TYP * Gram,135ZZ_data_t * data,136ZZ_tree_t * tree,137QtoZ_TYP * inzidenz)) ;138extern void *ZZ _ZZ_P_PROTO_((bravais_TYP * group,139matrix_TYP * gram,140int *divisors,141QtoZ_TYP *inzidenz,142char *options,143FILE *putputfile,144int super_nr,145int konst_flag)) ;146147extern bravais_TYP **get_groups _ZZ_P_PROTO_((bravais_TYP **ADGROUPS,148int ad_no,149int *number)) ;150151#endif /* _ZZ_P_H */152153154155