GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#include"typedef.h"1#include"getput.h"2#include"bravais.h"3#include"matrix.h"45main (int argc, char *argv[])6{7int i,8j,9anz,10epsilon,11expected_dimension;1213int sym_opt;14bravais_TYP *B;15matrix_TYP **F;16char comment[80];1718read_header(argc, argv);19if(FILEANZ != 1)20{21printf("Usage: %s 'file' [-a] [-s] [-e=n] [-d=n]\n",argv[0]);22printf("\n");23printf("file: bravais_TYP containing a finite unimodular group G.\n");24printf("\n");25printf("Calculates a Z-basis for the space of matrices with g^{tr}Ag = A for all\n");26printf("g in G by a quick seminumerical algorithm with some random features. By \n");27printf("default all symmetric invariant matrices are calculated,\n");28printf("\n");29printf("Options:\n");30printf("-a: All invariant matrices are calculated.\n");31printf("-s: All skew-symmetric invariant matrices are calculated.\n");32printf("-e=n: Changes the default value of control parameter from 100 to n>100. \n");33printf("-d=n: The program will calculate n+1 elements F_0,..., F_n of the \n");34printf(" invariant space, then it calculates a Z-basis of the Q-span of\n");35printf(" F_0, ..., F_n intersected with Z^nxn.\n");36printf(" This option is only usefull if one knows the dimension of the \n");37printf(" space of invariant forms. By default this number is calculated \n");38printf(" by modular arithmetic.\n");39printf("\n");40printf("Cf. Form_space.\n");41if (is_option('h')){42exit(0);43}44else{45exit(31);46}47}4849B = get_bravais(FILENAMES[0]);50sym_opt = 1;5152if(is_option('a') == TRUE){53sym_opt = 0;54}55if(is_option('s') == TRUE){56sym_opt = -1;57}5859if (is_option('d')){60expected_dimension = optionnumber('d');61}62else{63/* calculating the dimension over a prime field */64F = p_formspace(B->gen,B->gen_no,1949,sym_opt,&expected_dimension);65}6667if(optionnumber('e') == 0)68epsilon = 101;69else70epsilon = optionnumber('e');7172F = invar_space(B->gen, B->gen_no,expected_dimension,sym_opt,epsilon,&anz);73printf("#%d\n", anz);74for(i=0;i<anz;i++)75put_mat(F[i], NULL, "invariant matrix", 2);7677exit(0);78}798081