From 596fc84235207901f23cec6f843540f43087e12e Mon Sep 17 00:00:00 2001 From: Peter Bruin Date: Tue, 12 Aug 2014 21:22:25 +0100 Subject: [PATCH] Trac 16807: fix overflow in conversion Integer -> FiniteFieldElement_pari_ffelt --- .../rings/finite_rings/element_pari_ffelt.pyx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/sage/rings/finite_rings/element_pari_ffelt.pyx b/src/sage/rings/finite_rings/element_pari_ffelt.pyx index a6a33bf0cd1..057e94db62a 100644 --- a/src/sage/rings/finite_rings/element_pari_ffelt.pyx +++ b/src/sage/rings/finite_rings/element_pari_ffelt.pyx @@ -49,7 +49,19 @@ cdef GEN _INT_to_FFELT(GEN g, GEN x) except NULL: Convert the t_INT `x` to an element of the field of definition of the t_FFELT `g`. - This function must be called within pari_catch_sig_on() ... pari_catch_sig_off(). + This function must be called within ``pari_catch_sig_on()`` + ... ``pari_catch_sig_off()``. + + TESTS: + + Converting large integers to finite field elements does not lead + to overflow errors (see :trac:`16807`):: + + sage: p = previous_prime(2^64) + sage: F. = GF(p^2) + sage: x * 2^63 + 9223372036854775808*x + """ cdef GEN f, p = gel(g, 4), result cdef long t @@ -71,7 +83,7 @@ cdef GEN _INT_to_FFELT(GEN g, GEN x) except NULL: elif t == t_FF_Flxq: f = cgetg(3, t_VECSMALL) set_gel(f, 1, gmael(g, 2, 1)) - f[2] = itos(x) + f[2] = itou(x) else: pari_catch_sig_off() raise TypeError("unknown PARI finite field type")