GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#include"typedef.h"123int INFO_LEVEL;4extern int SFLAG;56main (int argc, char *argv[])7{8bravais_TYP *G, *Gtr;9matrix_TYP *A, *P, *S;10int Pmin;1112extern char **FILENAMES;13extern int FILEANZ;1415extern matrix_TYP *get_mat ();16extern void put_mat ();17extern bravais_TYP *get_bravais();18extern matrix_TYP *first_perfect();19extern matrix_TYP *trace_bifo();2021read_header(argc, argv);22if(FILEANZ != 3){23printf("Usage: %s 'file1' 'file2' 'file3'\n",argv[0]);24printf("\n");25printf("file1: bravais_TYP containing the finite unimodular group G.\n");26printf("file2: bravais_TYP containing G^{tr}.\n");27printf("file3: matrix_TYP containing a positive definite G-invariant form F.\n");28printf("\n");29printf("Returns a G-perfect form in the neighbourhood of F.\n");30printf("\n");31printf("Cf. Normalizer, Perfect_neighbours.\n");32if (is_option('h')){33exit(0);34}35else{36exit(31);37}38}3940/* diagonistics for memory-leakages */41if (is_option('h')){42INFO_LEVEL = optionnumber('h');43}44if (INFO_LEVEL & 12){45SFLAG = 1;46}4748G = get_bravais(FILENAMES[0]);49Gtr = get_bravais(FILENAMES[1]);50A = get_mat(FILENAMES[2]);51S = trace_bifo(G->form, Gtr->form, G->form_no);52P = first_perfect(A, G, Gtr->form, S, &Pmin);53put_mat(P, NULL, "G-perfect form", 2);54printf("The Minimum is %d\n", Pmin);55put_mat(S, NULL, "tr_bifo", 2);5657/* cleaning up the memory */58free_mat(P);59free_mat(S);60free_mat(A);61free_bravais(G);62free_bravais(Gtr);6364/* diagonistics for memory-leakages */65if (INFO_LEVEL & 12){66pointer_statistics(0,0);67}6869exit(0);70}717273