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

-- 
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