load fast_unit.sage fd=open("clean_cubic-1-4000-3-1.txt","r") gd=open("fastprincipal-1-4000-3-1.txt","w") hd=open("principalnonfast-1-4000-3-1.txt","w") id=open("fastnonprincipal-1-4000-3-1.txt","w") def gl_is_principal(f): K. = NumberField(f) OK = K.ring_of_integers() m = K.disc().sqrt() answer = false for ell in m.prime_factors(): gl = (ell*OK).factor()[0][0] if gl.is_principal(): answer = true break return answer Qx.=QQ[] line=fd.readline() total = 0 principalfast = 0 fastnonprincipal = 0 principalnonfast = 0 while line != "": if line[0] != "x": line=fd.readline() continue f=Qx(line) total += 1 eps0,eps1=fast_units(f) fast_cond = eps0.is_unit() and (not eps0 in [1,-1]) princ_cond = gl_is_principal(f) if princ_cond and fast_cond: principalfast += 1 gd.write(line) elif princ_cond and not fast_cond: principalnonfast += 1 hd.write(line) elif fast_cond and not princ_cond: fastnonprincipal += 1 id.write(line) line=fd.readline() print total,principalnonfast,fastnonprincipal,principalfast