On 9/7/10 9:19 AM, andrew ewart wrote:
code S=GF(5) R.<z1, z2>=PolynomialRing(S, 2, "z") T.<x>=PolynomialRing(S) def poly_ran(): ef=R(1) eye=0 if eye<10: f=R.random_element() g=f.factor(proof=false) if g[0][0]*g.unit==f: ef=ef*f eye=eye+1 else: eye=eye else: print ef return ef def is_nice(ef): fz0= T(ef(x,0)) if fz0.is_squarefree(): if ef.coefficient(z1^ef.degrees()[0]) == 1: return true else: print 'ef not nice: not monic' else: print 'ef not nice: not squarefree' def quickfactor(ef): if is_nice(ef)==true: fx0 = T(ef(x,0)) fac = fx0.factor() l = len(list(fac)) print l degx= ef.degree(z1) degy= ef.degree(z2) degree=2*degx*degy print degree for n in xrange(0, l): h = fac[n][0] if (h.is_monic()): if h == fx0: return ef print h degh=h.degree() break print degh E.<t> = S.extension(h) E1=S['t'] G.<y> = E['y'] print G df=diff(ef,z1) print df print parent(df) dif=E(df(t,0)) print dif s=1/(dif) print s a0=E(t) ak=a0 print ak for k in xrange(0, degree): ak=ak-s*G(ef(ak,y)) ak=ak%(y^(k+2)) b = ak print b degad=b.degree(y) print degad li=vector((b^j)%y^(degree+1) for j in xrange(0,degx+1)) print li B=matrix(S,(degy+1)*degx, degree+1) D=matrix(S,degree+1,degree+1,1) for ja in range(0,degx): for ep in xrange(0,(degy+1)): lee=((li[ja]*y^ep)%(y^(degree+1))).coeffs() leelen=len(lee) lei=lee+([0]*(degree+1-leelen)) B[ep+(ja*(degy+1))]=vector(lei) DE=B.stack(D) BE=DE.transpose() print BE print "" A=BE.rref() print A i = degx for ie in xrange(degh,degx+1): print A[ie*(degy + 1) - 1][0:ie*(degy+1)] print tuple([0]*(ie*(degy+1))) if list(A[ie*(degy + 1) - 1][0:ie*(degy+1)])!=[0]*(ie*(degy+1)): i = ie + 1 break print i bi = vector(li[i].list()+[0]*(degree-li[i].degree())) bi = bi.transpose() Ad = A.matrix_from_rows_and_columns([0..(degree)],[(degy+1)*degx..(A.ncols()-1)])print Ad print "" v1 = -(Ad*bi).transpose()[0] print v1 lp = [] for i1 in xrange(0,i): ll=v1[i1*(degy+1):(i1+1)*(degy+1)] print ll p = R(0) for i2 in xrange(0,degy+1): print parent(ll[i2]) p = p + R(E1(ll[i2])(z1)*z2^i2) lp = lp + [p] print lp g=R(z1^i) for i1 in xrange(0, i): g = g + R(lp[i1])*z1^i1 return g else: pass print quickfactor(ef) sage output: Traceback (most recent call last): File "quickfact2.py", line 117, in<module> print quickfactor(ef) NameError: name 'ef' is not defined
Sure. You haven't set "ef" to be anything above. What should "ef" be? (in other words, there is no line "ef=something" above. Thanks, Jason -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
