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