GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
/****************************************************************************1**2*A degree.c ANUPQ source Eamonn O'Brien3**4*Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany5*Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia6**7*/89#include "pq_defs.h"10#include "pga_vars.h"11#include "pq_functions.h"12#include "constants.h"1314/* compute the number of allowable subgroups;15also, set up powers, offset, and inverses arrays */1617void compute_degree(struct pga_vars *pga)18{19register int i;20register int maximum = 0;2122pga->Degree = 0;2324/* compute degree; store offset for each definition set */25for (i = 0; i < pga->nmr_def_sets; ++i) {26pga->offset[i] = pga->Degree;2728/* this is a test to try to prevent integer overflow */2930if (int_power(pga->p, pga->available[i]) > (INT_MAX - pga->Degree)) {31text(19, 0, 0, 0, 0);32if (!isatty(0))33exit(FAILURE);34else35return;36}37pga->Degree += int_power(pga->p, pga->available[i]);38if (maximum < pga->available[i])39maximum = pga->available[i];40}4142/* store powers of prime */43pga->powers = allocate_vector(maximum + 1, 0, 0);44for (i = 0; i <= maximum; ++i)45pga->powers[i] = int_power(pga->p, i);4647/* store inverses of 1 .. p - 1 */48pga->inverse_modp = allocate_vector(pga->p, 0, 0);49for (i = 1; i < pga->p; ++i)50pga->inverse_modp[i] = invert_modp(i, pga->p);5152if (pga->print_degree)53printf("Degree of permutation group is %d\n", pga->Degree);54}555657