allocatemem(2^31); b(x,y) = -x[1]*y[1]+sum(i=2,#x,x[i]*y[i]) n(x) = b(x,x) L=vector(678,i,readvec("generateursX26L"i)); B=vector(678,i, matrix(26,26,j,k,b(L[i][j],L[i][k]))); chercher(a,v) = local(i0=0) ; for(i=1,#v, if(a==v[i], i0=i)); i0 Rootsys=readvec(rootsys); S=readvec(rootortho); racinessimples(Q) = local(V2,v2,rho) ; V2=qfminim(Q,2)[3]; v2=[] ; rho=sum(i=1,#V2,V2[,i]) ; for(i=1,#V2, if(qfeval(Q,V2[,i],rho)==2, v2=concat(v2,[V2[,i]]~))); v2 racinesirred(v2,Q) = local(f=[1],F=1,FF,n=#v2,B=matrix(n,n,i,j,qfeval(Q,v2[i],v2[j])),g,G=[],bb=1,bbb,a,rr) ; if(n==0, [1,[]], g=vector(n-1,i,i+1) ; while(bb, for(i=1,#f, for(j=1,#g, if(B[g[j],f[i]]!=0, F=concat(F,g[j]) ) )); g=[]; FF=Set(F) ; for(i=1, n, if(setsearch(FF,i)==0, g=concat(g,[i]))); if(#F>#f, f=F, bb=0)); bbb=matrix(#f,#f,i,j,B[f[i],f[j]]); a=concat(vector(4,i, sum(j=1,#bbb, (sum(k=1,#bbb,bbb[j,k])==(3-i)))), [matdet(bbb)]); if(#f==n, [Rootsys[chercher(a,Rootsys)+1],[[vector(#f,i,v2[f[i]]),Rootsys[chercher(a,Rootsys)+1]]]], rr=racinesirred(vector(#g,i,v2[g[i]]),Q) ; [Rootsys[chercher(a,Rootsys)+1]*rr[1], concat([[vector(#f,i,v2[f[i]]),Rootsys[chercher(a,Rootsys)+1]]], rr[2]) ] ) ) reseauquotient(r) = local(V2=vector(#r[2],i,r[2][i][1]), v2=[]) ; for(i=1,#V2, v2=concat(v2,V2[i])) ; [r,matsnf(matrix(26,#v2,i,j,v2[j][i]))] v2=vector(#B,i,racinessimples(B[i])); f=[] ; r=vector(#B,i,racinesirred(v2[i],B[i])); for(i=1,#r, if(sum(j=1,#r, r[i][1]==r[j][1])>1, f=concat(f,[i]))); f invracines=Set(vector(#f,i,r[f[i]][1])) ; g=[] ; r=vector(#f,i,reseauquotient(r[f[i]])) ; for(i=1,#r, r[i]=[r[i][1][1],r[i][2]]) ; for(i=1,#r, if(sum(j=1,#r, r[i]==r[j])>1, g=concat(g,[i]))); g invquotient=Set(vector(#g,i,r[g[i]])) ; r=vector(#B,i,racinesirred(v2[i],B[i])); orthogonal(U,Q,u) = local(v=vector(#U,i,qfeval(Q,U[i],u)), V=vector(#U), g) ; V[1]=1 ; for(i=2,#U, g=gcdext(v[1],v[i]); v[1]=g[3]; V=g[1]*V+vector(#V,j,g[2]*(i==j))); g=g[3]; v=sum(i=1,#U,U[i]*V[i]) ; if(g==0, V=U, V=vector(#U,i, U[i]-(1/g)*(qfeval(Q,U[i],u))*v)); V=matrix(#U[1],#U,i,j,V[j][i]); V=V*qflll(V); V=vector(#V,i,vector(#V~,j,V[j,i])) ; V ortho(Q,r,S) = local(U=vector(26,i,vector(26,j,i==j))) ; for(i=1,#r[2], if(chercher(r[2][i][2],S), for(j=1,#r[2][i][1], U=orthogonal(U,Q,r[2][i][1][j]) ))) ; matrix(#U,#U,i,j,qfeval(Q,U[i],U[j])) invariant(Q) = { local(r,R,M,v2,a) ; v2=racinessimples(Q) ; r=racinesirred(v2,Q) ; if(setsearch(invracines,r[1])==0, r[1], R=reseauquotient(r) ; if(setsearch(invquotient,[R[1][1],R[2]])==0, [R[1][1],R[2]] , M=ortho(Q,r,S[chercher(r[1],S)+1]) ; [R[1][1],R[2],qfminim(M,4,0)] )) } inv=vector(#B,i,invariant(B[i])); reseau(m) = local(B=matrix(#m,#m,i,j,b(m[i],m[j]))) ; chercher(invariant(B),inv) for(k=1,678, v=L[k] ; T2=vector(678); forvec(a=vector(26,i,[0,1]), if((a!=0), aaa=sum(i=1,26,a[i]*v[i]) ; q=(1/2)*n(aaa) ; if(Mod(q,2)==0, for(i=1,#v, if(Mod(b(v[i],aaa),2)==1, i0=i)) ; m=vector(#v,j,b(v[i0],aaa)*v[j]-b(v[j],aaa)*v[i0]) ; m=concat(m,2*v); m=concat(m,[(1/2)*(aaa-q*v[i0])]) ; m=matrix(34,#m,i,j,m[j][i]) ; M=m*qflll(m) ; m=vector(#M,i,vector(#M~,j,M[j,i])) ; i0=reseau(m) ; T2[i0]=T2[i0]+1 ;)) ; for(i=1,#T2, write("T2X26L"k, T2[i])); ) t2=vector(678,i,readvec("T2X26L"i)); T2=matrix(#t2,#t2,i,j,t2[j][i]);