Hi All, Code:
sage: bits=3 sage: sage: k=GF(2^bits,'a') sage: P=PolynomialRing(k,1+bits+bits+bits-1+(1<<bits),['y'] + ['a{0}'.format(g) for g in xrange(bits)] + ['b{0}'.format(g) for g in xrange(bits)] + ['c{0}'.format(g) for g in xrange(1,bits)] + ['p{0}'.format(g) for g in xrange(1<<bits)]) sage: sage: A1=sum([P('(a{0})*y^{0}'.format(g)) for g in xrange(bits)]) sage: A2=sum([P('(b{0})*y^{0}'.format(g)) for g in xrange(bits)]) sage: A3=sum([P('(c{0})*y^{0}'.format(g)) for g in xrange(1,bits)]) sage: pol = sum([P('(p{0})*y^{0}'.format(g)) for g in xrange(1<<bits)]) sage: sage: pol=pol.subs({P("y"):A2}) sage: pol=A1.subs({P("y"):pol}) sage: pol=pol+A3 sage: sage: print "pol = {0}".format(pol) sage: print "~"*20 sage: pol=pol.mod(P("y^{0}+y".format(1<<bits))) sage: print "pol = {0}".format(pol) Output: pol = y^28*a2*b2^14*p7^2 + y^26*a2*b1^2*b2^12*p7^2 + y^24*a2*b1^4*b2^10*p7^2 + y^24*a2*b0^2*b2^12*p7^2 + y^24*a2*b2^12*p6^2 + y^22*a2*b1^6*b2^8*p7^2 + y^20*a2*b1^8*b2^6*p7^2 + y^20*a2*b0^2*b1^4*b2^8*p7^2 + y^20*a2*b0^4*b2^10*p7^2 + y^20*a2*b1^4*b2^8*p6^2 + y^18*a2*b1^10*b2^4*p7^2 + y^18*a2*b0^4*b1^2*b2^8*p7^2 + y^20*a2*b2^10*p5^2 + y^16*a2*b1^12*b2^2*p7^2 + y^16*a2*b0^2*b1^8*b2^4*p7^2 + y^16*a2*b0^6*b2^8*p7^2 + y^18*a2*b1^2*b2^8*p5^2 + y^16*a2*b1^8*b2^4*p6^2 + y^16*a2*b0^4*b2^8*p6^2 + y^14*a2*b1^14*p7^2 + y^16*a2*b0^2*b2^8*p5^2 + y^12*a2*b0^2*b1^12*p7^2 + y^12*a2*b0^4*b1^8*b2^2*p7^2 + y^12*a2*b0^8*b2^6*p7^2 + y^16*a2*b2^8*p4^2 + y^12*a2*b1^12*p6^2 + y^10*a2*b0^4*b1^10*p7^2 + y^10*a2*b0^8*b1^2*b2^4*p7^2 + y^12*a2*b1^8*b2^2*p5^2 + y^8*a2*b0^6*b1^8*p7^2 + y^8*a2*b0^8*b1^4*b2^2*p7^2 + y^8*a2*b0^10*b2^4*p7^2 + y^10*a2*b1^10*p5^2 + y^8*a2*b0^4*b1^8*p6^2 + y^8*a2*b0^8*b2^4*p6^2 + y^14*a1*b2^7*p7 + y^6*a2*b0^8*b1^6*p7^2 + y^13*a1*b1*b2^6*p7 + y^12*a2*b2^6*p3^2 + y^8*a2*b0^2*b1^8*p5^2 + y^12*a1*b1^2*b2^5*p7 + y^12*a1*b0*b2^6*p7 + y^4*a2*b0^10*b1^4*p7^2 + y^4*a2*b0^12*b2^2*p7^2 + y^12*a1*b2^6*p6 + y^11*a1*b1^3*b2^4*p7 + y^10*a2*b1^2*b2^4*p3^2 + y^8*a2*b1^8*p4^2 + y^4*a2*b0^8*b1^4*p6^2 + y^10*a1*b1^4*b2^3*p7 + y^10*a1*b0*b1^2*b2^4*p7 + y^10*a1*b0^2*b2^5*p7 + y^2*a2*b0^12*b1^2*p7^2 + y^10*a1*b1^2*b2^4*p6 + y^9*a1*b1^5*b2^2*p7 + y^9*a1*b0^2*b1*b2^4*p7 + y^8*a2*b1^4*b2^2*p3^2 + y^8*a2*b0^2*b2^4*p3^2 + y^10*a1*b2^5*p5 + y^4*a2*b0^8*b2^2*p5^2 + y^8*a1*b1^6*b2*p7 + y^8*a1*b0*b1^4*b2^2*p7 + y^8*a1*b0^3*b2^4*p7 + a2*b0^14*p7^2 + y^9*a1*b1*b2^4*p5 + y^8*a1*b1^4*b2^2*p6 + y^8*a1*b0^2*b2^4*p6 + y^7*a1*b1^7*p7 + y^8*a2*b2^4*p2^2 + y^6*a2*b1^6*p3^2 + y^8*a1*b0*b2^4*p5 + y^2*a2*b0^8*b1^2*p5^2 + a2*b0^12*p6^2 + y^6*a1*b0*b1^6*p7 + y^6*a1*b0^2*b1^4*b2*p7 + y^6*a1*b0^4*b2^3*p7 + y^8*a1*b2^4*p4 + y^6*a1*b1^6*p6 + y^5*a1*b0^2*b1^5*p7 + y^5*a1*b0^4*b1*b2^2*p7 + y^4*a2*b0^2*b1^4*p3^2 + y^4*a2*b0^4*b2^2*p3^2 + y^6*a1*b1^4*b2*p5 + a2*b0^10*p5^2 + y^4*a1*b0^3*b1^4*p7 + y^4*a1*b0^4*b1^2*b2*p7 + y^4*a1*b0^5*b2^2*p7 + y^5*a1*b1^5*p5 + y^4*a1*b0^2*b1^4*p6 + y^4*a1*b0^4*b2^2*p6 + y^3*a1*b0^4*b1^3*p7 + y^4*a2*b1^4*p2^2 + y^6*a1*b2^3*p3 + y^2*a2*b0^4*b1^2*p3^2 + a2*b0^8*p4^2 + y^4*a1*b0*b1^4*p5 + y^2*a1*b0^5*b1^2*p7 + y^2*a1*b0^6*b2*p7 + y^5*a1*b1*b2^2*p3 + y^4*a1*b1^4*p4 + y^2*a1*b0^4*b1^2*p6 + y*a1*b0^6*b1*p7 + y^4*a2*b2^2*p1^2 + y^4*a1*b1^2*b2*p3 + y^4*a1*b0*b2^2*p3 + a2*b0^6*p3^2 + y^2*a1*b0^4*b2*p5 + a1*b0^7*p7 + y^4*a1*b2^2*p2 + y^3*a1*b1^3*p3 + y*a1*b0^4*b1*p5 + a1*b0^6*p6 + y^2*a2*b1^2*p1^2 + a2*b0^4*p2^2 + y^2*a1*b0*b1^2*p3 + y^2*a1*b0^2*b2*p3 + a1*b0^5*p5 + y^2*a1*b1^2*p2 + y*a1*b0^2*b1*p3 + a1*b0^4*p4 + y^2*a1*b2*p1 + a2*b0^2*p1^2 + a1*b0^3*p3 + y*a1*b1*p1 + a1*b0^2*p2 + y^2*c2 + a2*p0^2 + a1*b0*p1 + y*c1 + a1*p0 + a0 ~~~~~~~~~~~~~~~~~~~~ pol = y^7*a2*b1^14*p7^2 + y^7*a2*b2^14*p7^2 + y^10*a2*b1^10*p5^2 + y^8*a2*b0^4*b1^8*p6^2 + y^8*a2*b0^8*b2^4*p6^2 + y^14*a1*b2^7*p7 + y^6*a2*b0^8*b1^6*p7^2 + y^6*a2*b1^8*b2^6*p7^2 + y^6*a2*b0^2*b1^4*b2^8*p7^2 + y^6*a2*b0^4*b2^10*p7^2 + y^9*a2*b0^2*b2^8*p5^2 + y^13*a1*b1*b2^6*p7 + y^5*a2*b0^2*b1^12*p7^2 + y^5*a2*b0^4*b1^8*b2^2*p7^2 + y^5*a2*b0^8*b2^6*p7^2 + y^5*a2*b1^2*b2^12*p7^2 + y^12*a2*b2^6*p3^2 + y^8*a2*b0^2*b1^8*p5^2 + y^6*a2*b1^4*b2^8*p6^2 + y^12*a1*b1^2*b2^5*p7 + y^12*a1*b0*b2^6*p7 + y^4*a2*b0^10*b1^4*p7^2 + y^4*a2*b0^12*b2^2*p7^2 + y^4*a2*b1^10*b2^4*p7^2 + y^4*a2*b0^4*b1^2*b2^8*p7^2 + y^9*a2*b2^8*p4^2 + y^12*a1*b2^6*p6 + y^5*a2*b1^12*p6^2 + y^11*a1*b1^3*b2^4*p7 + y^3*a2*b0^4*b1^10*p7^2 + y^3*a2*b0^8*b1^2*b2^4*p7^2 + y^3*a2*b1^4*b2^10*p7^2 + y^3*a2*b0^2*b2^12*p7^2 + y^10*a2*b1^2*b2^4*p3^2 + y^8*a2*b1^8*p4^2 + y^6*a2*b2^10*p5^2 + y^4*a2*b0^8*b1^4*p6^2 + y^10*a1*b1^4*b2^3*p7 + y^10*a1*b0*b1^2*b2^4*p7 + y^10*a1*b0^2*b2^5*p7 + y^2*a2*b0^12*b1^2*p7^2 + y^2*a2*b1^12*b2^2*p7^2 + y^2*a2*b0^2*b1^8*b2^4*p7^2 + y^2*a2*b0^6*b2^8*p7^2 + y^5*a2*b1^8*b2^2*p5^2 + y^10*a1*b1^2*b2^4*p6 + y^3*a2*b2^12*p6^2 + y^9*a1*b1^5*b2^2*p7 + y^9*a1*b0^2*b1*b2^4*p7 + y*a2*b0^6*b1^8*p7^2 + y*a2*b0^8*b1^4*b2^2*p7^2 + y*a2*b0^10*b2^4*p7^2 + y*a2*b1^6*b2^8*p7^2 + y^8*a2*b1^4*b2^2*p3^2 + y^8*a2*b0^2*b2^4*p3^2 + y^10*a1*b2^5*p5 + y^4*a2*b0^8*b2^2*p5^2 + y^4*a2*b1^2*b2^8*p5^2 + y^2*a2*b1^8*b2^4*p6^2 + y^2*a2*b0^4*b2^8*p6^2 + y^8*a1*b1^6*b2*p7 + y^8*a1*b0*b1^4*b2^2*p7 + y^8*a1*b0^3*b2^4*p7 + a2*b0^14*p7^2 + y^9*a1*b1*b2^4*p5 + y^8*a1*b1^4*b2^2*p6 + y^8*a1*b0^2*b2^4*p6 + y^7*a1*b1^7*p7 + y^8*a2*b2^4*p2^2 + y^6*a2*b1^6*p3^2 + y^8*a1*b0*b2^4*p5 + y^2*a2*b0^8*b1^2*p5^2 + a2*b0^12*p6^2 + y^6*a1*b0*b1^6*p7 + y^6*a1*b0^2*b1^4*b2*p7 + y^6*a1*b0^4*b2^3*p7 + y^8*a1*b2^4*p4 + y^6*a1*b1^6*p6 + y^5*a1*b0^2*b1^5*p7 + y^5*a1*b0^4*b1*b2^2*p7 + y^4*a2*b0^2*b1^4*p3^2 + y^4*a2*b0^4*b2^2*p3^2 + y^6*a1*b1^4*b2*p5 + a2*b0^10*p5^2 + y^4*a1*b0^3*b1^4*p7 + y^4*a1*b0^4*b1^2*b2*p7 + y^4*a1*b0^5*b2^2*p7 + y^5*a1*b1^5*p5 + y^4*a1*b0^2*b1^4*p6 + y^4*a1*b0^4*b2^2*p6 + y^3*a1*b0^4*b1^3*p7 + y^4*a2*b1^4*p2^2 + y^6*a1*b2^3*p3 + y^2*a2*b0^4*b1^2*p3^2 + a2*b0^8*p4^2 + y^4*a1*b0*b1^4*p5 + y^2*a1*b0^5*b1^2*p7 + y^2*a1*b0^6*b2*p7 + y^5*a1*b1*b2^2*p3 + y^4*a1*b1^4*p4 + y^2*a1*b0^4*b1^2*p6 + y*a1*b0^6*b1*p7 + y^4*a2*b2^2*p1^2 + y^4*a1*b1^2*b2*p3 + y^4*a1*b0*b2^2*p3 + a2*b0^6*p3^2 + y^2*a1*b0^4*b2*p5 + a1*b0^7*p7 + y^4*a1*b2^2*p2 + y^3*a1*b1^3*p3 + y*a1*b0^4*b1*p5 + a1*b0^6*p6 + y^2*a2*b1^2*p1^2 + a2*b0^4*p2^2 + y^2*a1*b0*b1^2*p3 + y^2*a1*b0^2*b2*p3 + a1*b0^5*p5 + y^2*a1*b1^2*p2 + y*a1*b0^2*b1*p3 + a1*b0^4*p4 + y^2*a1*b2*p1 + a2*b0^2*p1^2 + a1*b0^3*p3 + y*a1*b1*p1 + a1*b0^2*p2 + y^2*c2 + a2*p0^2 + a1*b0*p1 + y*c1 + a1*p0 + a0 I expect that the degree of the polynomial will be less than 2^bits=8. However, for the third monomial (y^10*a2*b1^10*p5^2) degree is equal to 10 and the largest is 12. Moreover: sage: pol=P("y^10*a2*b1^10*p5^2").mod(P("y^{0}+y".format(1<<bits))) sage: print "pol = {0}".format(pol) Output: pol = y^3*a2*b1^10*p5^2 Where is the problem? Machine: linux: Linux pcen 3.0.0-16-generic #28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux sage: 'Sage Version 4.8, Release Date: 2012-01-20' Oleksandr -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
Polynomial.sage
Description: Binary data