Skip to content

Commit c1b3bdd

Browse files
author
Release Manager
committed
Trac #12529: libsingular reduces polynomials incompletely
Condensed version of a report by Oleksandr Kazymyrov [http://groups.google.com/group/sage- support/browse_thread/thread/b90fbb622ddb55ab on sage-support]. Define `g` by modding out in a multivariate polynomial ring: {{{ sage: gens = 'y a0 a1 a2 b0 b1 b2 c1 c2 d0 d1 d2 d3 d4 d5 d6 d7'.split() sage: R = PolynomialRing(GF(8), 17, gens) sage: R.inject_variables(verbose=False) sage: A, B, C = a0 + a1*y + a2*y^2, b0 + b1*y + b2*y^2, c1*y + c2*y^2 sage: D = d0 + d1*y + d2*y^2 + d3*y^3 + d4*y^4 + d5*y^5 + d6*y^6 + d7*y^7 sage: F = D.subs({y: B}) sage: G = A.subs({y: F}) + C sage: g = G.mod(y^8 + y) }}} After modding out by a polynomial of degree 8 in `y`, the degree of `g` in `y` should be at most 7. Up to Sage 9.1.rc1: {{{ sage: g.degree(y) 14 }}} After #27508 (Force tail reduction in polynomial quotient ring), merged in Sage 9.1.rc2: {{{ sage: g.degree(y) 7 }}} The problem was libsingular not doing tail reduction when calling Singular. This ticket adds the above example as a doctest. URL: https://trac.sagemath.org/12529 Reported by: SimonKing Ticket author(s): Samuel Lelièvre Reviewer(s): Kiran Kedlaya
2 parents e6fc19b + 5b3253a commit c1b3bdd

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/sage/rings/polynomial/polynomial_element.pyx

+15
Original file line numberDiff line numberDiff line change
@@ -2788,6 +2788,21 @@ cdef class Polynomial(CommutativeAlgebraElement):
27882788
-1
27892789
sage: (x^3 + x - 1) % (x^2 - 1)
27902790
2*x - 1
2791+
2792+
TESTS:
2793+
2794+
Check the problem reported at :trac:`12529` is fixed::
2795+
2796+
sage: gens = 'y a0 a1 a2 b0 b1 b2 c1 c2 d0 d1 d2 d3 d4 d5 d6 d7'.split()
2797+
sage: R = PolynomialRing(GF(8), 17, gens)
2798+
sage: R.inject_variables(verbose=False)
2799+
sage: A, B, C = a0 + a1*y + a2*y^2, b0 + b1*y + b2*y^2, c1*y + c2*y^2
2800+
sage: D = d0 + d1*y + d2*y^2 + d3*y^3 + d4*y^4 + d5*y^5 + d6*y^6 + d7*y^7
2801+
sage: F = D.subs({y: B})
2802+
sage: G = A.subs({y: F}) + C
2803+
sage: g = G.mod(y^8 + y)
2804+
sage: g.degree(y)
2805+
7
27912806
"""
27922807
return self % other
27932808

0 commit comments

Comments
 (0)