GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#include"typedef.h"1/**************************************************************************\2@---------------------------------------------------------------------------3@---------------------------------------------------------------------------4@ FILE: trace_bifo.c5@---------------------------------------------------------------------------6@---------------------------------------------------------------------------7@8\**************************************************************************/910/**************************************************************************\11@---------------------------------------------------------------------------12@ Calculates S = (S[i][j]) with S[i][j] = trace(F1[i]F2[j]) for 1<= i,j <= anz.13@ Then g = gcd(S[i][j]) is calculated and the result is S = 1/g * S.14@15@---------------------------------------------------------------------------16@17\*************************************************************************/18matrix_TYP *trace_bifo(F1, F2, anz)19matrix_TYP **F1, **F2;20int anz;21{22int i,j,k,l, Sij, n;23matrix_TYP *S;24int g,x;2526extern matrix_TYP *init_mat();2728/* changed tilman 7/1/97 form29n = F1[1]->cols;30to: */31n = F1[0]->cols;32S = init_mat(anz, anz, "");33for(i=0;i<anz;i++)34for(j=0;j<anz;j++)35{36Sij = 0;37for(k=0;k<n;k++)38for(l=0;l<n;l++)39Sij += F1[i]->array.SZ[k][l] * F2[j]->array.SZ[l][k];40S->array.SZ[i][j] = Sij;41}42g = 0;43for(i=0; i<anz && g != 1; i++)44for(j=0; j<anz && g != 1; j++)45{46if(S->array.SZ[i][j] != 0)47{48if(g == 0)49{50g = S->array.SZ[i][j];51if(g < 0)52g = -g;53}54else55{56x = GGT(g, S->array.SZ[i][j]);57if(x<0)58g = -x;59else g = x;60}61}62}6364if(g != 1 && g != 0)65{66for(i=0; i<anz && g != 1; i++)67for(j=0; j<anz && g != 1; j++)68S->array.SZ[i][j] /= g;69}70return(S);71}727374