{ \\ PARI/GP script "FrattiniRealOpt93.gp" \\ 3rd step of the principalization algorithm: \\ class group structure of real Frattini fields of degree 18 allocatemem(512000000); fn="FrattiniResultReal93.txt"; a=0; b=readvec(DscH10); c=readvec(LinH10); d=readvec(AbsH10); e=0; disc=0; reg=0; m=0; rs=[0,0,0,0]; p61=x; p32=x; for(i=1,length(b), a=0; e=0; reg=0; \\ separator line for quartet if(b[i]!=disc, for(j=1,73, print1("="); write1(fn,"="); ); \\ end for print("="); write(fn,"="); \\ quadratic base field print1("d2=" b[i]); write1(fn,"d2=" b[i]); q=quadclassunit(b[i]); print(" c2=" q[2]); write(fn," c2=" q[2]); m=0; rs=[0,0,0,0]; ); \\ end if disc=b[i]; \\ terminate when the doublet is complete if(m<2, \\ number field of degree 3 p3=x^3-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-b[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(" c=" c[i]); write1(fn," c=" c[i]); print1(" d=" d[i]); write1(fn," d=" d[i]); i3=truncate(sqrt(poldisc(p3)/b[i])); print1(" i=" i3); write1(fn," i=" i3); if(bnf3.disc!=b[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 }