#16681: Random doctest failures in sage/rings/algebraic_closure_finite_field.py
---------------------------------+------------------------
       Reporter:  vbraun         |        Owner:
           Type:  defect         |       Status:  new
       Priority:  major          |    Milestone:  sage-6.3
      Component:  number theory  |   Resolution:
       Keywords:                 |    Merged in:
        Authors:                 |    Reviewers:
Report Upstream:  N/A            |  Work issues:
         Branch:                 |       Commit:
   Dependencies:                 |     Stopgaps:
---------------------------------+------------------------
Changes (by vbraun):

 * cc: pbruin, defeo, vdelecroix, mmarco (added)


Old description:

> This is caused by #15390.
>
> First of all, you should use a form of assert that gives some minimal
> information when it can fail, e.g. in the form below.
>
> The following fails occasionally on OSX 10.9 (cf.
> algebraic_closure_finite_field.py line 910)
> {{{
> sage: K = GF(3).algebraic_closure()
> sage: R = PolynomialRing(K, 'T')
> sage: T = R.gen()
> sage: for d in xrange(1000):
> ....:         p = R.random_element(degree=8)
> ....:         assert p.factor().prod() == p, p.factor()
> ....:
> ---------------------------------------------------------------------------
> AssertionError                            Traceback (most recent call
> last)
> <ipython-input-22-f31a401fb53b> in <module>()
>       1 for d in xrange(Integer(1000)):
>       2         p = R.random_element(degree=Integer(8))
> ----> 3         assert p.factor().prod() == p, p.factor()
>       4
>
> AssertionError: T * (T + 1) * (T + z5 + 1) * (T + z5^3 + 1) * (T + 2*z5^4
> + z5) * (T + 2*z5^4 + 2*z5^2) * (T + 2*z5^4 + 2*z5^3 + z5^2 + z5)
> }}}
>
> On a related note, a random element can be zero:
> {{{
> sage: K = GF(3).algebraic_closure()
> sage: R = PolynomialRing(K, 'T')
> sage: T = R.gen()
> sage: for d in xrange(1000):
> ....:         p = R.random_element(degree=randint(2,8))
> ....:         assert p.factor().prod() == p, p
> ....:
> ---------------------------------------------------------------------------
> ValueError                                Traceback (most recent call
> last)
> <ipython-input-15-db4aacba08d5> in <module>()
>       1 for d in xrange(Integer(1000)):
>       2         p =
> R.random_element(degree=randint(Integer(2),Integer(8)))
> ----> 3         assert p.factor().prod() == p, p
>       4
>
> /home/release/Sage/local/lib/python2.7/site-
> packages/sage/rings/polynomial/polynomial_element.so in
> sage.rings.polynomial.polynomial_element.Polynomial.factor
> (build/cythonized/sage/rings/polynomial/polynomial_element.c:23530)()
>
> ValueError: factorization of 0 not defined
> }}}

New description:

 This is caused by #15390
 {{{
 sage -t --long src/sage/rings/algebraic_closure_finite_field.py
 **********************************************************************
 File "src/sage/rings/algebraic_closure_finite_field.py", line 940, in
 
sage.rings.algebraic_closure_finite_field.AlgebraicClosureFiniteField_generic._factor_univariate_polynomial
 Failed example:
     for d in xrange(10):
         p = R.random_element(degree=randint(2,8))
         assert p.factor().prod() == p
 Exception raised:
     Traceback (most recent call last):
       File "/Users/buildslave-
 sage/slave/sage_git/build/local/lib/python2.7/site-
 packages/sage/doctest/forker.py", line 480, in _run
         self.execute(example, compiled, test.globs)
       File "/Users/buildslave-
 sage/slave/sage_git/build/local/lib/python2.7/site-
 packages/sage/doctest/forker.py", line 839, in execute
         exec compiled in globs
       File "<doctest
 
sage.rings.algebraic_closure_finite_field.AlgebraicClosureFiniteField_generic._factor_univariate_polynomial[4]>",
 line 3, in <module>
         assert p.factor().prod() == p
     AssertionError
 **********************************************************************
 1 item had failures:
    1 of   6 in
 
sage.rings.algebraic_closure_finite_field.AlgebraicClosureFiniteField_generic._factor_univariate_polynomial
 }}}

 First of all, you should use a form of assert that gives some minimal
 information when it can fail, e.g. in the form below. The following fails
 occasionally and makes it easy enough to reproduce:
 {{{
 sage: K = GF(3).algebraic_closure()
 sage: R = PolynomialRing(K, 'T')
 sage: T = R.gen()
 sage: for d in xrange(1000):
 ....:         p = R.random_element(degree=8)
 ....:         assert p.factor().prod() == p, p.factor()
 ....:
 ---------------------------------------------------------------------------
 AssertionError                            Traceback (most recent call
 last)
 <ipython-input-22-f31a401fb53b> in <module>()
       1 for d in xrange(Integer(1000)):
       2         p = R.random_element(degree=Integer(8))
 ----> 3         assert p.factor().prod() == p, p.factor()
       4

 AssertionError: T * (T + 1) * (T + z5 + 1) * (T + z5^3 + 1) * (T + 2*z5^4
 + z5) * (T + 2*z5^4 + 2*z5^2) * (T + 2*z5^4 + 2*z5^3 + z5^2 + z5)
 }}}

 On a related note, a random element can be zero:
 {{{
 sage: K = GF(3).algebraic_closure()
 sage: R = PolynomialRing(K, 'T')
 sage: T = R.gen()
 sage: for d in xrange(1000):
 ....:         p = R.random_element(degree=randint(2,8))
 ....:         assert p.factor().prod() == p, p
 ....:
 ---------------------------------------------------------------------------
 ValueError                                Traceback (most recent call
 last)
 <ipython-input-15-db4aacba08d5> in <module>()
       1 for d in xrange(Integer(1000)):
       2         p =
 R.random_element(degree=randint(Integer(2),Integer(8)))
 ----> 3         assert p.factor().prod() == p, p
       4

 /home/release/Sage/local/lib/python2.7/site-
 packages/sage/rings/polynomial/polynomial_element.so in
 sage.rings.polynomial.polynomial_element.Polynomial.factor
 (build/cythonized/sage/rings/polynomial/polynomial_element.c:23530)()

 ValueError: factorization of 0 not defined
 }}}

--

--
Ticket URL: <http://trac.sagemath.org/ticket/16681#comment:1>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to