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")