#13824: ZeroDivisionError in finite field __contains__
------------------------------------+---------------------------------------
       Reporter:  vbraun            |         Owner:  AlexGhitza
           Type:  defect            |        Status:  new       
       Priority:  major             |     Milestone:  sage-5.6  
      Component:  basic arithmetic  |    Resolution:            
       Keywords:  beginner          |   Work issues:            
Report Upstream:  N/A               |     Reviewers:            
        Authors:                    |     Merged in:            
   Dependencies:                    |      Stopgaps:            
------------------------------------+---------------------------------------
Description changed by vbraun:

Old description:

> The `__contains__` method should return ``False`` if the element is not
> cyclotomic, but instead it blows up with a zero division error if the
> denominator is zero in the cyclotomic field:
> {{{
> sage: 4/3 in GF(3)
> ERROR: An unexpected error occurred while tokenizing input
> The following traceback may be corrupted or invalid
> The error message is: ('EOF in multi-line statement', (1931, 0))
>
> ERROR: An unexpected error occurred while tokenizing input
> The following traceback may be corrupted or invalid
> The error message is: ('EOF in multi-line statement', (1936, 0))
>
> ---------------------------------------------------------------------------
> ZeroDivisionError                         Traceback (most recent call
> last)
>
> /home/vbraun/Documents/Ftheory/ToricFibrationsP2/TateShafarevich/<ipython
> console> in <module>()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/structure/parent.so in
> sage.structure.parent.Parent.__contains__
> (sage/structure/parent.c:7845)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/structure/parent.so in
> sage.structure.parent.Parent.__call__ (sage/structure/parent.c:7305)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/structure/coerce_maps.so in
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_
> (sage/structure/coerce_maps.c:3583)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/structure/coerce_maps.so in
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_
> (sage/structure/coerce_maps.c:3485)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/rings/finite_rings/integer_mod_ring.pyc in
> _element_constructor_(self, x)
>     928         """
>     929         try:
> --> 930             return integer_mod.IntegerMod(self, x)
>     931         except (NotImplementedError, PariError):
>     932             raise TypeError, "error coercing to finite field"
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/rings/finite_rings/integer_mod.so in
> sage.rings.finite_rings.integer_mod.IntegerMod
> (sage/rings/finite_rings/integer_mod.c:3501)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/rings/finite_rings/integer_mod.so in
> sage.rings.finite_rings.integer_mod.IntegerMod_int.__init__
> (sage/rings/finite_rings/integer_mod.c:19191)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/rings/rational.so in sage.rings.rational.Rational.__mod__
> (sage/rings/rational.c:20034)()
>
> /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
> packages/sage/rings/integer.so in sage.rings.integer.Integer.inverse_mod
> (sage/rings/integer.c:32846)()
>
> ZeroDivisionError: Inverse does not exist.
> }}}

New description:

 The `__contains__` method should return ``False`` if the element does not
 make sense in the finite field, but instead it blows up with a zero
 division error if the denominator is zero in the finite field:
 {{{
 sage: 4/3 in GF(3)
 ERROR: An unexpected error occurred while tokenizing input
 The following traceback may be corrupted or invalid
 The error message is: ('EOF in multi-line statement', (1931, 0))

 ERROR: An unexpected error occurred while tokenizing input
 The following traceback may be corrupted or invalid
 The error message is: ('EOF in multi-line statement', (1936, 0))

 ---------------------------------------------------------------------------
 ZeroDivisionError                         Traceback (most recent call
 last)

 /home/vbraun/Documents/Ftheory/ToricFibrationsP2/TateShafarevich/<ipython
 console> in <module>()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/structure/parent.so in
 sage.structure.parent.Parent.__contains__ (sage/structure/parent.c:7845)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__
 (sage/structure/parent.c:7305)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/structure/coerce_maps.so in
 sage.structure.coerce_maps.DefaultConvertMap_unique._call_
 (sage/structure/coerce_maps.c:3583)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/structure/coerce_maps.so in
 sage.structure.coerce_maps.DefaultConvertMap_unique._call_
 (sage/structure/coerce_maps.c:3485)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/rings/finite_rings/integer_mod_ring.pyc in
 _element_constructor_(self, x)
     928         """
     929         try:
 --> 930             return integer_mod.IntegerMod(self, x)
     931         except (NotImplementedError, PariError):
     932             raise TypeError, "error coercing to finite field"

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/rings/finite_rings/integer_mod.so in
 sage.rings.finite_rings.integer_mod.IntegerMod
 (sage/rings/finite_rings/integer_mod.c:3501)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/rings/finite_rings/integer_mod.so in
 sage.rings.finite_rings.integer_mod.IntegerMod_int.__init__
 (sage/rings/finite_rings/integer_mod.c:19191)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/rings/rational.so in sage.rings.rational.Rational.__mod__
 (sage/rings/rational.c:20034)()

 /home/vbraun/opt/sage-5.5.rc0/local/lib/python2.7/site-
 packages/sage/rings/integer.so in sage.rings.integer.Integer.inverse_mod
 (sage/rings/integer.c:32846)()

 ZeroDivisionError: Inverse does not exist.
 }}}

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13824#comment:2>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to