From 9dc90cc9367a016745c85326d7a8abfabe2e3d53 Mon Sep 17 00:00:00 2001
From: Peter Bruin
Date: Wed, 27 May 2015 14:29:32 +0200
Subject: [PATCH] Trac 18467: fix degree of zero polynomials returned
PolynomialRealDense.quo_rem()
---
.../polynomial/polynomial_real_mpfr_dense.pyx | 20 ++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx b/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx
index 8ba9185b87b..cc5cd4e2c43 100644
--- a/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx
+++ b/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx
@@ -562,6 +562,8 @@ cdef class PolynomialRealDense(Polynomial):
@coerce_binop
def quo_rem(self, PolynomialRealDense other):
"""
+ Return the quotient with remainder of ``self`` by ``other``.
+
EXAMPLES::
sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
@@ -585,9 +587,25 @@ cdef class PolynomialRealDense(Polynomial):
sage: q, r = f.quo_rem(g)
sage: g*q + r == f
True
+
+ TESTS:
+
+ Check that :trac:`18467` is fixed::
+
+ sage: S. = RR[]
+ sage: z = S.zero()
+ sage: z.degree()
+ -1
+ sage: q, r = z.quo_rem(x)
+ sage: q.degree()
+ -1
"""
if other._degree < 0:
- raise ZeroDivisionError, "other must be nonzero"
+ raise ZeroDivisionError("other must be nonzero")
+ elif other._degree == 0:
+ return self * ~other[0], self._parent.zero()
+ elif other._degree > self._degree:
+ return self._parent.zero(), self
cdef mp_rnd_t rnd = self._base_ring.rnd
cdef PolynomialRealDense q, r
cdef Py_ssize_t i, j