summaryrefslogtreecommitdiff
path: root/sci-mathematics/pari/files/pari-2.15.2-ellsea.patch
blob: a5c19504ea870e0a12dec5f28b13eab4b6b58d67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# upstream bug https://pari.math.u-bordeaux.fr/cgi-bin/bugreport.cgi?bug=2441
# will be fixed in 2.15.3
diff --git a/src/basemath/ellsea.c b/src/basemath/ellsea.c
index a6871fa6a7..f1e725ea55 100644
--- a/src/basemath/ellsea.c
+++ b/src/basemath/ellsea.c
@@ -1303,6 +1303,7 @@ find_trace_Elkies_power(GEN a4, GEN a6, ulong ell, long *pt_k, struct meqn *MEQN
   lambda = tr ? find_eigen_value_oneroot(a4, a6, ell, tr, kpoly, T, p):
                 find_eigen_value_power(a4, a6, ell, 1, 1, kpoly, T, p);
   if (DEBUGLEVEL>1) err_printf(" [%ld ms]", timer_delay(ti));
+  if (lambda==ell) return NULL;
   if (smallfact && smallfact%(long)ell!=0)
   {
     ulong pell = pellk%ell;
@@ -1317,6 +1318,7 @@ find_trace_Elkies_power(GEN a4, GEN a6, ulong ell, long *pt_k, struct meqn *MEQN
     if (!tmp) { k = cnt-1; break; }
     if (DEBUGLEVEL) err_printf(", %Ps", powuu(ell, cnt));
     lambda = find_eigen_value_power(a4, a6, ell, cnt, lambda, gel(tmp,3), T, p);
+    if (lambda == upowuu(ell, cnt)) { k = cnt-1; break; }
     Eba4 = Eca4;
     Eba6 = Eca6;
     Eca4 = gel(tmp,1);