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

Reply via email to