#16374: better two_squares, three_squares, four_squares for small input
-------------------------+-------------------------------------------------
       Reporter:         |        Owner:
  vdelecroix             |       Status:  needs_work
           Type:         |    Milestone:  sage-6.3
  enhancement            |   Resolution:
       Priority:  major  |    Merged in:
      Component:         |    Reviewers:  Jeroen Demeyer, Leif Leonhardy,
  number theory          |  ​Nathann Cohen
       Keywords:         |  Work issues:
        Authors:         |       Commit:
  Vincent Delecroix      |  1b965f8361b779b8e888bb56a249ea48ac4b6852
Report Upstream:  N/A    |     Stopgaps:
         Branch:         |
  public/16374           |
   Dependencies:         |
-------------------------+-------------------------------------------------
Changes (by vbraun):

 * status:  positive_review => needs_work


Comment:

 Fails on 32 bit:
 {{{
 sage -t --long src/sage/rings/sum_of_squares.pyx
 **********************************************************************
 File "src/sage/rings/sum_of_squares.pyx", line 156, in
 sage.rings.sum_of_squares.two_squares_pyx
 Failed example:
     two_squares_pyx(2**32)
 Expected:
     Traceback (most recent call last):
     ...
     OverflowError: value too large to convert to uint32_t
 Got:
     <BLANKLINE>
     Traceback (most recent call last):
       File "/home/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 "/home/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.sum_of_squares.two_squares_pyx[6]>", line
 1, in <module>
         two_squares_pyx(Integer(2)**Integer(32))
       File "sum_of_squares.pyx", line 128, in
 sage.rings.sum_of_squares.two_squares_pyx
 (sage/rings/sum_of_squares.c:2759)
     OverflowError: long int too large to convert
 **********************************************************************
 File "src/sage/rings/sum_of_squares.pyx", line 197, in
 sage.rings.sum_of_squares.is_sum_of_two_squares_pyx
 Failed example:
     is_sum_of_two_squares_pyx(2**32)
 Expected:
     Traceback (most recent call last):
     ...
     OverflowError: value too large to convert to uint32_t
 Got:
     <BLANKLINE>
     Traceback (most recent call last):
       File "/home/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 "/home/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.sum_of_squares.is_sum_of_two_squares_pyx[2]>", line 1, in
 <module>
         is_sum_of_two_squares_pyx(Integer(2)**Integer(32))
       File "sum_of_squares.pyx", line 184, in
 sage.rings.sum_of_squares.is_sum_of_two_squares_pyx
 (sage/rings/sum_of_squares.c:2916)
     OverflowError: long int too large to convert
 **********************************************************************
 File "src/sage/rings/sum_of_squares.pyx", line 244, in
 sage.rings.sum_of_squares.three_squares_pyx
 Failed example:
     three_squares_pyx(2**32)
 Expected:
     Traceback (most recent call last):
     ...
     OverflowError: value too large to convert to uint32_t
 Got:
     <BLANKLINE>
     Traceback (most recent call last):
       File "/home/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 "/home/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.sum_of_squares.three_squares_pyx[10]>",
 line 1, in <module>
         three_squares_pyx(Integer(2)**Integer(32))
       File "sum_of_squares.pyx", line 212, in
 sage.rings.sum_of_squares.three_squares_pyx
 (sage/rings/sum_of_squares.c:3045)
     OverflowError: long int too large to convert
 **********************************************************************
 File "src/sage/rings/sum_of_squares.pyx", line 291, in
 sage.rings.sum_of_squares.four_squares_pyx
 Failed example:
     four_squares_pyx(2**32)
 Expected:
     Traceback (most recent call last):
     ...
     OverflowError: value too large to convert to uint32_t
 Got:
     <BLANKLINE>
     Traceback (most recent call last):
       File "/home/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 "/home/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.sum_of_squares.four_squares_pyx[5]>", line
 1, in <module>
         four_squares_pyx(Integer(2)**Integer(32))
       File "sum_of_squares.pyx", line 266, in
 sage.rings.sum_of_squares.four_squares_pyx
 (sage/rings/sum_of_squares.c:3209)
     OverflowError: long int too large to convert
 **********************************************************************
 4 items had failures:
    1 of  10 in sage.rings.sum_of_squares.four_squares_pyx
    1 of   4 in sage.rings.sum_of_squares.is_sum_of_two_squares_pyx
    1 of  14 in sage.rings.sum_of_squares.three_squares_pyx
    1 of  11 in sage.rings.sum_of_squares.two_squares_pyx
     [35 tests, 4 failures, 0.83 s]
 }}}

--
Ticket URL: <http://trac.sagemath.org/ticket/16374#comment:42>
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