#17717: Failure to reduce int modulo large prime
----------------------------+--------------------------------------
   Reporter:  xander.faber  |            Owner:
       Type:  defect        |           Status:  new
   Priority:  minor         |        Milestone:  sage-6.5
  Component:  finite rings  |         Keywords:  modular arithmetic
  Merged in:                |          Authors:
  Reviewers:                |  Report Upstream:  N/A
Work issues:                |           Branch:
     Commit:                |     Dependencies:
   Stopgaps:                |
----------------------------+--------------------------------------
 {{{
 sage: p = next_prime(2^32)
 sage: p
 4294967311
 sage: GF(p)(int(p+1))
 4294967312
 sage: GF(p)(p+1)
 1
 }}}

 The issue arises in
 sage/rings/finite_rings/integer_mod.pyx

 class method
 IntegerMod_gmp.set_from_long

 On line 1732, the code reduces value (mod modulus) when value < 0 or (
 value < modulus ). The latter condition is backward. It should be replaced
 with ( modulus < value).

 Replace line 1732
         `if value < 0 or mpz_cmp_si(self.__modulus.sageInteger.value,
 value) >= 0:`
 with
         `if value < 0 or mpz_cmp_si(value,
 self.__modulus.sageInteger.value) >= 0:`

--
Ticket URL: <http://trac.sagemath.org/ticket/17717>
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