GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#include "defs.h"1#include "permfns.h"23extern char inf[],inf2[],outf[],full,stabcall;4extern short perm[], sv2[],cp[],orb[],base[],5lorb[],fixpt[],fixb[],pno[],*pptr[],*svptr[],mnpt,mp,mb;67short npt;8FILE *ip,*op;910int egprog (void)11{ short nperms,ngens,nb,stab,olfb,nlfb,i,l,m,z;12if (full)13{ if ((ip=fopen(inf2,"r"))==0)14{ printf("Cannot open %s.\n",inf2); return(-1); }15fscanf(ip,"%hd%hd",&i,&ngens);16fclose(ip);17}18if ((ip=fopen(inf,"r"))==0) { printf("Cannot open %s.\n",inf); return(-1); }19if (stabcall)20{ printf("Stabilize how many points? "); scanf("%hd",&stab);}21else stab=0;22fscanf(ip,"%hd%hd%hd%hd",&npt,&nperms,&nb,&l);23if (npt>mnpt) {fprintf(stderr,"npt,too big. Increase NPT.\n"); return(-1); }24if (nperms>mp)25{ fprintf(stderr,"nperms too big. Increase MXP.\n"); return(-1);}26if (nb>mb) {fprintf(stderr,"nb too big. Increase MNB.\n"); return(-1); }27if (l<=0) {fprintf(stderr,"Wrong input format.\n"); return(-1); }28for (i=0;i<=nperms;i++) pptr[i]=perm+(npt+1)*i-1;29for (i=1;i<=nb;i++) svptr[i]=sv2+npt*(i-1)-1;30for (i=1;i<=npt;i++) pptr[0][i]=i;31readbaselo(nb,base,lorb);32for (i=1;i<=nperms;i++) readvec(pptr[i],1);33fclose(ip);3435/* Main algorithm begins */36op=fopen(outf,"w");37*pno=0; fixpt[nb+1]=0;38for (l=nb;l>stab;l--)39{ for (i=1;i<=nperms;i++) if (pptr[i][npt+1]==l) {(*pno)++; pno[*pno]=i; }40fixpt[l]= *pno;41}42for (l=stab;l>=1;l--) fixpt[l]=fixpt[stab+1];43for (l=nb;l>stab;l--)44{ olfb=fixpt[l+1]; nlfb=fixpt[l];45if ((nlfb-olfb)>1) for (i=olfb+1;i<=nlfb;i++)46{ z=pno[i];47/* We test whether perm no z is redundant as a generator.48If so, we leave pno[i]=0, if not we put it back to z.49*/50if (full==0 || z>ngens)51{ pno[i]=0;52for (m=l;m>stab && pno[i]==0;m--)53{*pno=fixpt[m]; if (orbitsv(base[m],svptr[m],0)<lorb[m]) pno[i]=z;}54}55}56}57*pno=0; l=0;58for (i=nb;i>=1;i--)59{ z=fixpt[i];60while (l<z)61{ l++;62if (pno[l]>0) { (*pno)++; pno[*pno]=pno[l]; }63}64lorb[i]=orbitsv(base[i],svptr[i],0);65}66fprintf(op,"%4d%4d%4d%4d\n",npt,*pno,nb,3);67printbaselo(nb,base,lorb); printpsv(nb,pno,svptr);68for (i=1;i<=*pno;i++) fprintf(op,"%4d",pno[i]); fprintf(op,"\n");69return(0);70}717273