{ \\ PARI/GP script "FrattiniCmplOpt93.gp" \\ 3nd step of the principalization algorithm: \\ class group structure of complex Frattini fields of degree 18 allocatemem(512000000); fn="FrattiniResultCmpl93.txt"; a=0; g=readvec(DH10); b=readvec(QH10); c=readvec(LH10); d=readvec(AH10); e=0; disc=0; reg=0; m=0; rs=[0,0,0,0]; p61=x; p32=x; for(i=1,length(g), a=0; e=0; reg=0; \\ separator line for quartet if(g[i]!=disc, for(j=1,73, print1("="); write1(fn,"="); );\\ end for print("="); write(fn,"="); \\ quadratic base field print1("d2=" g[i]); write1(fn,"d2=" g[i]); q=quadclassunit(g[i]); print(" c2=" q[2]); write(fn," c2=" q[2]); m=0; rs=[0,0,0,0]; );\\ end if disc=g[i]; \\ terminate when the doublet is complete if(m<2, \\ number field of degree 3 p3=x^3-b[i]*x^2+c[i]*x-d[i]; bnf3=bnfinit(p3,1); reg=round(10000*bnf3.reg); \\ skip duplicates of regulators if((rs[1]!=reg)&&(rs[2]!=reg)&&(rs[3]!=reg)&&(rs[4]!=reg), \\ increment the quartet counter m=m+1; if(m<=4, rs[m]=reg; );\\ end if if(2==m, p32=p3; );\\ end if print1("c3=" bnf3.clgp[2]); write1(fn,"c3=" bnf3.clgp[2]); if(0==bnf3.clgp[2][1]%27, a=2, if(0==bnf3.clgp[2][1]%9, a=1; );\\ end if );\\ end if \\ normal field of degree 6 p2=x^2-g[i]; p6=polcompositum(p2,p3)[1]; if(1==m, p61=p6; );\\ end if bnf6=bnfinit(p6,1); print1(", c6=" bnf6.clgp[2]); write1(fn,", c6=" bnf6.clgp[2]); print1(", r=" reg); write1(fn,", r=" reg); print1(" b=" b[i]); write1(fn," b=" b[i]); print1(" c=" c[i]); write1(fn," c=" c[i]); print1(" d=" d[i]); write1(fn," d=" d[i]); i3=truncate(sqrt(poldisc(p3)/g[i])); print1(" i=" i3); write1(fn," i=" i3); if(bnf3.disc!=g[i], print(", d3=" bnf3.disc); write(fn,", d3=" bnf3.disc), print(""); write(fn,"") );\\ end if if(length(bnf6.clgp[2])>2, if(0==bnf6.clgp[2][3]%3, e=1; );\\ end if );\\ end if if(2==a, print("27 | cubic class number"); write(fn,"27 | cubic class number"), if(1==a, print("9 | cubic class number"); write(fn,"9 | cubic class number"); );\\ end if );\\ end if if(e, print("Exotic 3-class group"); write(fn,"Exotic 3-class group"); );\\ end if if(2==m, \\ number field of degree 18 p18=polcompositum(p61,p32)[1]; bnf18=bnfinit(p18,1); print("c18=" bnf18.clgp[2]); write(fn,"c18=" bnf18.clgp[2]); if(0==bnf18.clgp[2][1]%81, print("81 | first Frattini invariant"); write(fn,"81 | first Frattini invariant"), if(0==bnf18.clgp[2][1]%27, print("27 | first Frattini invariant"); write(fn,"27 | first Frattini invariant"); );\\ end if );\\ end if );\\ end if );\\ end if );\\ end if );\\ end for }