Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pari for openSUSE:Factory checked in 
at 2026-07-01 16:38:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pari (Old)
 and      /work/SRC/openSUSE:Factory/.pari.new.11887 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pari"

Wed Jul  1 16:38:45 2026 rev:38 rq:1362743 version:2.17.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/pari/pari.changes        2026-02-03 
21:36:21.836878584 +0100
+++ /work/SRC/openSUSE:Factory/.pari.new.11887/pari.changes     2026-07-01 
16:39:15.130520500 +0200
@@ -1,0 +2,7 @@
+Tue Jun 30 22:10:36 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 2.17.4
+  * This release fixes a number cases where PARI was returning an
+    incorrect result.
+
+-------------------------------------------------------------------

Old:
----
  pari-2.17.3.tar.gz
  pari-2.17.3.tar.gz.asc

New:
----
  pari-2.17.4.tar.gz
  pari-2.17.4.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pari.spec ++++++
--- /var/tmp/diff_new_pack.SaaeCb/_old  2026-07-01 16:39:18.530638844 +0200
+++ /var/tmp/diff_new_pack.SaaeCb/_new  2026-07-01 16:39:18.530638844 +0200
@@ -22,7 +22,7 @@
 %global sover 9
 %global lname   libpari-gmp-tls%sover
 Name:           pari
-Version:        2.17.3
+Version:        2.17.4
 Release:        0
 Summary:        Computer Algebra System for computations in Number Theory
 License:        GPL-2.0-only

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.SaaeCb/_old  2026-07-01 16:39:18.606641490 +0200
+++ /var/tmp/diff_new_pack.SaaeCb/_new  2026-07-01 16:39:18.610641629 +0200
@@ -1,5 +1,5 @@
-mtime: 1770133064
-commit: dd360ccd7f21590668abbab1040dcdba0f36aacd400ccc8ddb4a40200986dd0f
+mtime: 1782857484
+commit: d05c145b476b6d642f9eb68e3459477f243125c8d6a1126a4527beb2f1c3cc2d
 url: https://src.opensuse.org/jengelh/pari
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-07-01 00:11:24.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ pari-2.17.3.tar.gz -> pari-2.17.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/CHANGES new/pari-2.17.4/CHANGES
--- old/pari-2.17.3/CHANGES     2025-11-10 20:57:22.000000000 +0100
+++ new/pari-2.17.4/CHANGES     2026-06-20 13:34:08.000000000 +0200
@@ -1,6 +1,23 @@
 Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
 
  [last column crossreferences current development release 2.18.1]
+Done for version 2.17.4 (released 29/06/2026):
+  Fixed
+BA  1- call(printsep, [" "]) -> SEGV                                      [F44]
+    2- forsubset: handle trivial case of negative cardinalities [#2652]   [F47]
+BA  3- ellchangecurve(E).roots could be wrong [#2660]                     [F48]
+    4- charpoly(Mod(x+y,y^2+x+1),y) -> invalid t_POL [#2668]              [F50]
+    5- writebin(file) only saved polynomials variables in file            [F53]
+BA  6- lfun(1/3+I*10^19) -> overflow in expo()                            [F54]
+BA  7- fflog(a, b, o) was very slow for small o but large fields [#2676]  [F55]
+LGr 8- psi(1+O(x^5)) -> wrong result [#2677]                              [F56]
+    9- zetahurwitz(large s, |x| > 1) is inaccurate (correct absolute accuracy
+        but zeta(s,x) is small and relative error is large) [#2673]       [F57]
+BA  10- ellcard(ellinit([ffgen([53,36]),1])) -> wrong result              [F58]
+    11- polcyclofactors(((x^6+x^3+1)*(3*x^3+1))^2) -> oo loop [#2680]     [F59]
+
+
+ [last column crossreferences current development release 2.18.1]
 Done for version 2.17.3 (released 24/11/2025):
   Fixed
     1- sumnumrat & friends: use full precision estimates to avoid failing with
@@ -30,6 +47,7 @@
    22- zeta(1/2+10^22*I) -> precision too low                             [F42]
 BA 23- lfuninit(lfunshift(1,3,1)) was incorrect [#2631]                   [F43]
 
+ [last column crossreferences current development release 2.18.1]
 Done for version 2.17.2 (released 01/03/2025):
   Fixed
 BA   1- ellrootno over number fields could be slow [#2595]                 [F2]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/config/version 
new/pari-2.17.4/config/version
--- old/pari-2.17.3/config/version      2025-11-11 15:13:01.000000000 +0100
+++ new/pari-2.17.4/config/version      2026-06-20 13:34:34.000000000 +0200
@@ -5,7 +5,7 @@
 VersionMinor='17'
 
 # Patch level
-patch='3'
+patch='4'
 
 # Version code
 version_code=`expr $VersionMajor \\* 65536 + $VersionMinor \\* 256 + $patch`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/doc/refmacro.tex 
new/pari-2.17.4/doc/refmacro.tex
--- old/pari-2.17.3/doc/refmacro.tex    2025-09-30 22:44:29.000000000 +0200
+++ new/pari-2.17.4/doc/refmacro.tex    2026-06-10 22:39:14.000000000 +0200
@@ -8,7 +8,7 @@
 % file.
 
 \def\versionnumber{2.39}% Version of these reference cards
-\def\PARIversion{2.17.3}% Version of PARI described on these reference cards
+\def\PARIversion{2.17.4}% Version of PARI described on these reference cards
 \def\year{2024}
 \def\month{September}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/doc/usersch2.tex 
new/pari-2.17.4/doc/usersch2.tex
--- old/pari-2.17.3/doc/usersch2.tex    2025-10-02 15:19:41.000000000 +0200
+++ new/pari-2.17.4/doc/usersch2.tex    2026-06-11 21:18:43.000000000 +0200
@@ -548,7 +548,7 @@
 
 \kbd{a.pol}: returns the \typ{POL} $x + wy$. In particular
 \kbd{[x,y] = Vecrev(a.pol)} recovers $x$ and $y$. The components $x$
-and $y$ are also obtained via \kbd{real(a)} and \kbd{imag(z)} respectively.
+and $y$ are also obtained via \kbd{real(a)} and \kbd{imag(a)} respectively.
 
 \subsec{Polmods (\typ{POLMOD})}%
 \sidx{polmod}\kbdsidx{t_POLMOD}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/doc/usersch3.tex 
new/pari-2.17.4/doc/usersch3.tex
--- old/pari-2.17.3/doc/usersch3.tex    2025-11-11 15:13:00.000000000 +0100
+++ new/pari-2.17.4/doc/usersch3.tex    2026-06-20 13:34:15.000000000 +0200
@@ -758,7 +758,7 @@
 \synt{forsubgroup}{void *data, long (*call)(void*,GEN), GEN G, GEN bound}.
 
 
\subsec{forsubset$(\var{nk},s,\var{seq})$}\kbdsidx{forsubset}\label{se:forsubset}
-If \var{nk} is a nonnegative integer $n$, evaluates \kbd{seq}, where
+If \var{nk} is an integer $n$, evaluates \kbd{seq}, where
 the formal variable $s$ goes through all subsets of $\{1, 2, \ldots, n\}$;
 if \var{nk} is a pair $[n,k]$ of integers, $s$ goes through subsets
 of size $k$ of $\{1, 2, \ldots, n\}$. In both cases $s$ goes through subsets
@@ -797,6 +797,10 @@
 ? binomial(40,35)
 %5 = 658008
 @eprog
+The function is not useful for negative $n$ or $k$, but these corner cases
+are supported nonetheless. When $n \leq 0$, we iterate through subsets of
+the empty set, i.e., the empty set; when $k < 0$ no subset of the required
+length exist and nothing happens.
 
 \subsec{forvec$(X=v,\var{seq},\{\fl=0\})$}\kbdsidx{forvec}\label{se:forvec}
 Let $v$ be an $n$-component vector (where $n$ is arbitrary) of
@@ -2312,7 +2316,7 @@
 %\syn{NO}
 
 \subsec{localprec$(p)$}\kbdsidx{localprec}\label{se:localprec}
-Set the real precision to $p$ in the dynamic scope and return $p$.
+Set the real precision to $p$ in the dynamic scope.
 All computations are performed as if \tet{realprecision} was $p$:
 transcendental constants (e.g.~\kbd{Pi}) and
 conversions from exact to floating point inexact data use $p$ decimal
@@ -24000,7 +24004,7 @@
 invert in $\Q[X]/(g)$, this may be even faster than $\fl = 1$.
 \bprog
 ? T = x^6 + 3*x^4 - 6*x^3 + 3*x^2 + 18*x + 10;
-? U = x^3 + 3*x^2 + 3*x - 2
+? U = x^3 + 3*x^2 + 3*x - 2;
 ? nfisincl(U, T)
 %3 = [24/179*x^5-27/179*x^4+80/179*x^3-234/179*x^2+380/179*x+94/179]
 ? a = nfisincl(U, T, 1)
@@ -29503,7 +29507,7 @@
 
 \subsec{ellheight$(E,\{P\},\{Q\})$}\kbdsidx{ellheight}\label{se:ellheight}
 Let $E$ be an elliptic curve defined over $K = \Q$ or a number field,
-as output by \kbd{ellinit}; it need not be given by a minimal model
+as output by \kbd{ellinit}; it needs not be given by a minimal model
 although the computation will be faster if it is.
 
 \item Without arguments $P,Q$, returns the Faltings height of the curve $E$
@@ -31024,8 +31028,8 @@
 \subsec{ellsaturation$(E,V,B)$}\kbdsidx{ellsaturation}\label{se:ellsaturation}
 Let $E$ be an elliptic curve over $\Q$ and
 and $V$ be a set of independent non-torsion rational points on $E$ of infinite
-order that generate a subgroup $G$ of $E(\Q)$ of finite index.
-Return a new set $W$ of the same length that generate a subgroup $H$ of
+order that generates a subgroup $G$ of $E(\Q)$ of finite index.
+Return a new set $W$ of the same length that generates a subgroup $H$ of
 $E(\Q)$ containing $G$ and such that $[E(\Q):H]$ is not divisible by any
 prime number less than $B$. The running time is roughly quadratic in $B$.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/F2v.c 
new/pari-2.17.4/src/basemath/F2v.c
--- old/pari-2.17.3/src/basemath/F2v.c  2025-09-30 22:44:29.000000000 +0200
+++ new/pari-2.17.4/src/basemath/F2v.c  2026-06-11 21:18:29.000000000 +0200
@@ -401,7 +401,7 @@
   GEN y, c, d;
   long i, j, k, r, m, n;
 
-  n = lg(x)-1;
+  n = lg(x)-1; if (n==0) return x;
   m = mael(x,1,1); r=0;
 
   d = cgetg(n+1, t_VECSMALL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/Flxq_log.c 
new/pari-2.17.4/src/basemath/Flxq_log.c
--- old/pari-2.17.3/src/basemath/Flxq_log.c     2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/Flxq_log.c     2026-06-11 21:20:14.000000000 
+0200
@@ -77,13 +77,90 @@
   } while (!Flx_is_irred(a, p) || has_deg1_auto(a,p,pi) );
 }
 
+
+/* For p = 1 [3], we do not always get full rank using the default model
+ * this is a table of working models to use
+ * this save time   */
+static GEN
+smallirred_table(ulong p, ulong n)
+{
+  switch(p)
+  {
+    case 7:
+      if (n==21) return mkvecsmall3(3,5,1);
+      if (n==31) return mkvecsmall3(5,1,1);
+      break;
+    case 13:
+      if (n==19) return mkvecsmall3(8,0,1);
+      if (n==23) return mkvecsmall3(2,1,1);
+      if (n==37) return mkvecsmall3(3,1,1);
+      break;
+    case 19:
+      if (n==17) return mkvecsmall2(12,2);
+      if (n==29) return mkvecsmall2(7,2);
+      if (n==32) return mkvecsmall3(15,1,1);
+      if (n==38) return mkvecsmall3(6,1,1);
+      break;
+    case 31:
+      if (n==21) return mkvecsmall2(6,4);
+      if (n==23) return mkvecsmall3(4,1,1);
+      if (n==24) return mkvecsmall4(9,2,1,1);
+      if (n==26) return mkvecsmall4(18,0,0,1);
+      if (n==27) return mkvecsmall3(13,3,1);
+      break;
+    case 37:
+      if (n==22) return mkvecsmall2(15,13);
+      if (n==24) return mkvecsmall2(11,4);
+      if (n==29) return mkvecsmall3(20,5,1);
+      break;
+    case 43:
+      if (n==23) return mkvecsmall3(12,1,1);
+      if (n==26) return mkvecsmall4(15,0,0,1);
+      if (n==27) return mkvecsmall3(1,0,25);
+      break;
+    case 61:
+      if (n==26) return mkvecsmall3(37,1,1);
+      if (n==29) return mkvecsmall3(8,2,1);
+      break;
+    case 67:
+      if (n==26) return mkvecsmall4(60,0,0,1);
+      if (n==27) return mkvecsmall2(7,7);
+      break;
+    case 73:
+      if (n==26) return mkvecsmall3(50,1,1);
+      if (n==27) return mkvecsmall3(14,0,1);
+      break;
+    case 79:
+      if (n==23) return mkvecsmall3(36,1,1);
+      if (n==26) return mkvecsmall4(22,0,0,1);
+      if (n==27) return mkvecsmall3(66,0,2);
+      if (n==28) return mkvecsmall3(13,1,1);
+      if (n==29) return mkvecsmall4(1,0,0,1);
+      break;
+    case 103:
+      if (n==23) return mkvecsmall2(10,2);
+      break;
+    case 153:
+      if (n==23) return mkvecsmall2(33,1);
+      break;
+  }
+  return NULL;
+}
+
 /* Avoid automorphisms of degree 1 */
 static GEN
 smallirred_Flx(long p, ulong n, long sv, ulong pi)
 {
   GEN a = zero_zv(n+2);
+  GEN b = smallirred_table(p, n);
   a[1] = sv; a[3] = 1; a[n+2] = 1;
-  smallirred_Flx_next(a, p, pi);
+  if (b)
+  {
+    long i, lb = lg(b);
+    for (i = 1 ; i < lb; i++) a[i+1] = b[i];
+  }
+  else
+    smallirred_Flx_next(a, p, pi);
   return a;
 }
 
@@ -397,12 +474,15 @@
 Flxq_log_use_index_cubic(GEN m, GEN T0, ulong p)
 {
   pari_sp av = avma;
-  long n = get_Flx_degree(T0), r, nb;
-  GEN cost = smooth_best(p, n, &r, &nb);
-  GEN cost_rho = sqrti(shifti(m,2));
-  int use = (cost && gcmp(cost,cost_rho)<0);
-  set_avma(av);
-  return use;
+  long n = get_Flx_degree(T0), r, nb, e = expi(m);
+  if (e >= 27 && 10*(n*expu(p)+6)<=e*e)
+  {
+    GEN cost_rho = sqrti(shifti(m,2));
+    GEN cost = smooth_best(p, n, &r, &nb);
+    int use = (cost && gcmp(cost,cost_rho)<0);
+    set_avma(av);
+    return use;
+  } else return 0;
 }
 
 static GEN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/FpE.c 
new/pari-2.17.4/src/basemath/FpE.c
--- old/pari-2.17.3/src/basemath/FpE.c  2025-09-30 22:44:29.000000000 +0200
+++ new/pari-2.17.4/src/basemath/FpE.c  2026-06-11 21:21:09.000000000 +0200
@@ -1932,7 +1932,7 @@
     GEN a62 = FpXQ_sqr(a6,T,p);
     GEN num = FpX_mulu(a43,6912,p);
     GEN den = FpX_add(FpX_mulu(a43,4,p),FpX_mulu(a62,27,p),p);
-    return gerepileuptoleaf(av, FpXQ_div(num, den, T, p));
+    return gerepileupto(av, FpXQ_div(num, den, T, p));
   }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/FpXX.c 
new/pari-2.17.4/src/basemath/FpXX.c
--- old/pari-2.17.3/src/basemath/FpXX.c 2025-09-30 22:44:29.000000000 +0200
+++ new/pari-2.17.4/src/basemath/FpXX.c 2026-06-14 21:39:55.000000000 +0200
@@ -2121,7 +2121,7 @@
     if (degpol(f) <= 0) return scalarpol(a, v);
     b = Fq_neg(gel(f,3),T,p);
     if (signe(b)==0) return scalarpol(a, v);
-    if (!is_pm1(a)) b = Fq_mul(b, Fq_sqr(a, T, p), T, p);
+    b = Fq_mul(b, Fq_sqr(a, T, p), T, p);
     W = deg1pol_shallow(b, a, v);
     return gerepilecopy(av, W);
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/QX_factor.c 
new/pari-2.17.4/src/basemath/QX_factor.c
--- old/pari-2.17.3/src/basemath/QX_factor.c    2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/QX_factor.c    2026-06-14 21:42:02.000000000 
+0200
@@ -1346,7 +1346,7 @@
   RgX_check_ZX(f,"polcyclofactors");
   if (degpol(f))
   {
-    f = BD(ZX_radical(f));
+    f = BD(Q_primpart(ZX_radical(f)));
     if (f) return gerepilecopy(av, f);
   }
   set_avma(av); return cgetg(1,t_VEC);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/ZX.c 
new/pari-2.17.4/src/basemath/ZX.c
--- old/pari-2.17.3/src/basemath/ZX.c   2025-09-30 22:44:29.000000000 +0200
+++ new/pari-2.17.4/src/basemath/ZX.c   2026-06-11 21:22:56.000000000 +0200
@@ -1130,7 +1130,7 @@
 FqM_mul_Kronecker(GEN x, GEN y, GEN T, GEN p)
 {
   pari_sp av = avma;
-  long ex = ZXM_expi(x), ey = ZXM_expi(y), d= degpol(T), n = lg(x)-1;
+  long ex = ZXM_expi(x), ey = ZXM_expi(y), d = get_FpX_degree(T), n = lg(x)-1;
   long e = ex + ey + expu(d) + expu(n) + 4;
   long N = divsBIL(e)+1;
   GEN  z = ZM_mul(ZXM_eval2BIL(x,N), ZXM_eval2BIL(y,N));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/alglin2.c 
new/pari-2.17.4/src/basemath/alglin2.c
--- old/pari-2.17.3/src/basemath/alglin2.c      2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/alglin2.c      2026-06-11 21:19:13.000000000 
+0200
@@ -120,7 +120,7 @@
 /* (v - x)^d */
 static GEN
 caract_const(pari_sp av, GEN x, long v, long d)
-{ return gerepileupto(av, gpowgs(deg1pol_shallow(gen_1, gneg_i(x), v), d)); }
+{ return gerepileupto(av, gpowgs(gsub(pol_x(v), x), d)); }
 
 /* characteristic pol. Easy cases. Return NULL in case it's not so easy. */
 static GEN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/base4.c 
new/pari-2.17.4/src/basemath/base4.c
--- old/pari-2.17.3/src/basemath/base4.c        2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/base4.c        2026-06-11 21:17:57.000000000 
+0200
@@ -1282,6 +1282,7 @@
     h = cgetg(3, t_MAT);
     gel(h,1) = mkcol2(gcopy(f), gcopy(g));
     gel(h,2) = mkcol2(gen_1, gen_1);
+    return h;
   }
   if (typ(f) != t_MAT) return famat_add(g, f);
   if (lgcols(f) == 1) return gcopy(g);
@@ -1301,6 +1302,7 @@
     h = cgetg(3, t_MAT);
     gel(h,1) = mkcol2(gcopy(f), gcopy(g));
     gel(h,2) = mkcol2(gen_1, gen_m1);
+    return h;
   }
   if (typ(f) != t_MAT) return famat_sub(g, f);
   if (lgcols(f) == 1) return famat_inv(g);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/base5.c 
new/pari-2.17.4/src/basemath/base5.c
--- old/pari-2.17.3/src/basemath/base5.c        2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/base5.c        2026-06-11 21:19:08.000000000 
+0200
@@ -2283,7 +2283,7 @@
       case 2121:
         return mkvecsmall4(3,2,3,0); /* type 1+chi2 */
       case 22:
-        return mkvecsmall4(6,4,3,4); /* type ind_{Q4/Q2}psi2 (c=3) */
+        return mkvecsmall4(6,4,3,6); /* type ind_{Q4/Q2}psi2 (c=3) */
       case 41:
         return mkvecsmall4(5,12,-1,4); /* type exceptional A4 */
       default:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/elliptic.c 
new/pari-2.17.4/src/basemath/elliptic.c
--- old/pari-2.17.3/src/basemath/elliptic.c     2025-10-18 10:10:22.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/elliptic.c     2026-06-11 21:19:03.000000000 
+0200
@@ -1259,9 +1259,10 @@
     obj_insert_shallow(E, R_ETA, gmul(S, u));
   if ((S = obj_check(e, R_ROOTS)))
   {
-    GEN ro = cgetg(4, t_VEC), u2 = gsqr(u);
+    GEN ro = cgetg(7, t_VEC), u2 = gsqr(u);
     long i;
     for (i = 1; i <= 3; i++) gel(ro,i) = gdiv(gsub(gel(S,i), r), u2);
+    for (i = 4; i <= 6; i++) gel(ro,i) = gdiv(gel(S,i), u2);
     obj_insert_shallow(E, R_ROOTS, ro);
   }
   return E;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/ellisog.c 
new/pari-2.17.4/src/basemath/ellisog.c
--- old/pari-2.17.3/src/basemath/ellisog.c      2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/ellisog.c      2026-06-11 21:18:32.000000000 
+0200
@@ -1346,14 +1346,12 @@
   GEN B = ellnf_prime_degree_easy(E, bad);
   if (!signe(B))
   {
+    long D = elliscm(E);
+    if (D && !isintzero(nfisincl(quadpoly(stoi(D)), ellnf_get_nf(E))))
+      return stoi(D);
     B = ellnf_prime_degree_hard(E, bad);
     if (!signe(B))
-    {
-      long D = elliscm(E);
-      if (!D || isintzero(nfisincl(quadpoly(stoi(D)), ellnf_get_nf(E))))
-        pari_err_IMPL("ellisomat, very hard case");
-      return stoi(D);
-    }
+      pari_err_IMPL("ellisomat, very hard case");
   }
   if (!signe(B)) return NULL;
   B = muliu(absi(B), 6);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/lerch.c 
new/pari-2.17.4/src/basemath/lerch.c
--- old/pari-2.17.3/src/basemath/lerch.c        2025-09-30 22:44:29.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/lerch.c        2026-06-11 21:22:48.000000000 
+0200
@@ -262,7 +262,7 @@
     GEN C, ix = imag_i(x0);
     double c = (typ(s) == t_INT)? 1: 20 * log((double)bitprec);
     double rs = gtodouble(ra) + 1;
-    long k0;
+    long k0, bit;
     if (fli) a = gadd(a, ghalf); /* hack */
     if (rs > 0)
     {
@@ -276,21 +276,33 @@
     k0 = itos(gceil(gadd(ra, ghalf))) + 1;
     k = maxss(k0, k);
     if (odd(k)) k++;
-    /* R_k < 2 |binom(a,k+1) B_{k+2}/(k+2)| */
+    /* R_k < 2 |binom(a,k+1) B_{k+2}/(k+2)| * |N + x - 1|^(ra - k - 1)*/
     C = binomial(a, k+1); C = polcoef_i(C, 0, -1);
     C = gmul(C, gdivgu(bernfrac(k+2), k+2));
-    C = gmul2n(gabs(C,LOWDEFAULTPREC), bitprec + 1);
+    bit = bitprec;
+    /* if a < 0 and |x| >> 1, |zeta(s,x)| ~ |x|^ra is small: compensate for
+     * correct relative accuracy  */
+    if (rs < 0)
+    {
+      double dx = dbllog2(x0);
+      if (dx > 0) bit -= dx * gtodouble(ra);
+    }
+    /* + 1 i from the factor 2 in RHS above */
+    C = gmul2n(gabs(C,LOWDEFAULTPREC), bit + 1);
     C = gpow(C, ginv(gsubsg(k+1, ra)), LOWDEFAULTPREC);
-    /* need |N + x - 1|^2 > C^2 */
+    /* need |N + x - 1|^2 > C^2 to have R_k < 2^(-bit) */
     if (!gequal0(ix))
     {
       GEN tmp = gsub(gsqr(C), gsqr(ix));
-      if (gsigne(tmp) >= 0) C = gsqrt(tmp, LOWDEFAULTPREC);
+      C = (gsigne(tmp) <= 0)? NULL: gsqrt(tmp, LOWDEFAULTPREC);
+    }
+    N = 1;
+    if (C)
+    { /* now need |N + re(x) - 1| > C */
+      C = gadd(C, gsubsg(1, rx));
+      if (!is_real_t(typ(C))) pari_err_TYPE("zetahurwitz",s);
+      if (gsigne(C) > 0) N = itos(gceil(C));
     }
-    /* need |N + re(x) - 1| > C */
-    C = gceil(gadd(C, gsubsg(1, rx)));
-    if (typ(C) != t_INT) pari_err_TYPE("zetahurwitz",s);
-    N = signe(C) > 0? itos(C) : 1;
     if (N == 1 && signe(a) > 0)
     { /* May reduce k if 2Pix > a */
       /* Need 2 |x^(-K) (B_K/K) binom(a, K-1)| < 2^-bit |x|^-rs |zeta(s,x)|
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/lfunlarge.c 
new/pari-2.17.4/src/basemath/lfunlarge.c
--- old/pari-2.17.3/src/basemath/lfunlarge.c    2025-10-26 14:38:57.000000000 
+0100
+++ new/pari-2.17.4/src/basemath/lfunlarge.c    2026-06-11 21:19:49.000000000 
+0200
@@ -127,13 +127,17 @@
 static GEN
 applyfuneq(GEN gau, GEN s, GEN z, long odd, long q, long bitprec)
 {
-  GEN t, S;
+  GEN t, S, rS;
   long prec;
   if (!gequal0(s)) bitprec += maxss(gexpo(s), 0);
   prec = nbits2prec(bitprec);
   if (odd) gau = mulcxmI(gau);
-  S = gmul(Pi2n(-1, prec), gsubgs(s, odd));
-  t = ginv(gmul2n(gmul(gcos(S, prec), ggamma(s, prec)), 1));
+  S = mulcxI(gmul(Pi2n(-1,prec),gsubgs(s, odd)));
+  rS = real_i(S);
+  if (gsigne(rS) < 0) { S = gneg(S); rS = gneg(rS); }
+  if (gcmpgs(rS, bitprec) <= 0)
+    S = gadd(S,glog1p(gexp(gmulgs(S,-2),prec),prec));
+  t = gexp(gneg(gadd(S, glngamma(s, prec))), prec);
   t = gmul(gpow(gdivgs(Pi2n(1, prec), q), s, prec), t);
   return gmul(gmul(gau, t), z);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/polarit2.c 
new/pari-2.17.4/src/basemath/polarit2.c
--- old/pari-2.17.3/src/basemath/polarit2.c     2025-09-30 22:44:30.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/polarit2.c     2026-06-11 21:19:13.000000000 
+0200
@@ -3467,7 +3467,7 @@
 /* (v - x)^d */
 static GEN
 caract_const(pari_sp av, GEN x, long v, long d)
-{ return gerepileupto(av, gpowgs(deg1pol_shallow(gen_1, gneg_i(x), v), d)); }
+{ return gerepileupto(av, gpowgs(gsub(pol_x(v), x), d)); }
 
 GEN
 RgXQ_charpoly_i(GEN x, GEN T, long v)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/polarit3.c 
new/pari-2.17.4/src/basemath/polarit3.c
--- old/pari-2.17.3/src/basemath/polarit3.c     2025-09-30 22:44:30.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/polarit3.c     2026-06-11 21:22:52.000000000 
+0200
@@ -242,7 +242,7 @@
 GEN
 Rg_to_FpXQ(GEN x, GEN T, GEN p)
 {
-  long ta, tx = typ(x), v = get_FpX_var(T);
+  long ta, tx = typ(x), v = get_FpX_var(T), d = get_FpX_degree(T);
   GEN a, b;
   if (is_const_t(tx))
   {
@@ -252,7 +252,7 @@
       setvarn(z, v);
       return z;
     }
-    return scalar_ZX(degpol(T)? Rg_to_Fp(x, p): gen_0, v);
+    return scalar_ZX(d ? Rg_to_Fp(x, p): gen_0, v);
   }
   switch(tx)
   {
@@ -260,7 +260,7 @@
       b = gel(x,1);
       a = gel(x,2); ta = typ(a);
       if (is_const_t(ta))
-        return scalar_ZX(degpol(T)? Rg_to_Fp(a, p): gen_0, v);
+        return scalar_ZX(d ? Rg_to_Fp(a, p): gen_0, v);
       b = RgX_to_FpX(b, p); if (varn(b) != v) break;
       a = RgX_to_FpX(a, p);
       if (ZX_equal(b,get_FpX_mod(T)) || signe(FpX_rem(b,T,p))==0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/quad.c 
new/pari-2.17.4/src/basemath/quad.c
--- old/pari-2.17.3/src/basemath/quad.c 2025-09-30 22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/basemath/quad.c 2026-06-11 21:01:13.000000000 +0200
@@ -1229,7 +1229,8 @@
     A = shallowconcat(F, F0);
     Q = shallowconcat(Q, Q0);
   }
-  ct = 1 << (j-1);
+  if (j-1 >= LGnumBITS) pari_err_OVERFLOW("Zn_quad_roots");
+  ct = 1L << (j-1);
   T = ZV_producttree(Q);
   R = ZV_chinesetree(Q,T);
   Np = gmael(T, lg(T)-1, 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/basemath/trans2.c 
new/pari-2.17.4/src/basemath/trans2.c
--- old/pari-2.17.3/src/basemath/trans2.c       2025-09-30 22:44:30.000000000 
+0200
+++ new/pari-2.17.4/src/basemath/trans2.c       2026-06-11 21:20:36.000000000 
+0200
@@ -2223,7 +2223,7 @@
     if (gcmp(real_i(z0),ghalf) < 0) { z0 = gsubsg(1,z0); Y = gsubsg(1,y); }
     Q = serpsiz0(z0, L, v, prec);
   }
-  Y2 = serchop0(Y); if (signe(Y2)) Q = gsubst(Q, v, Y2);
+  Y2 = valser(Y)==0 ? serchop0(Y): Y; Q = gsubst(Q, v, Y2);
   /* psi(z0 + Y2) = psi(Y) */
   if (Y != y)
   { /* psi(y) = psi(Y) + Pi cotan(Pi Y) */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/funclist new/pari-2.17.4/src/funclist
--- old/pari-2.17.3/src/funclist        2025-10-18 10:06:25.000000000 +0200
+++ new/pari-2.17.4/src/funclist        2026-06-14 21:42:04.000000000 +0200
@@ -227,7 +227,7 @@
 2750879689 1971 ../functions/elliptic_curves/ellglobalred
 1752340507 3665 ../functions/elliptic_curves/ellgroup
 2517509974 1081 ../functions/elliptic_curves/ellheegner
-2938374598 1267 ../functions/elliptic_curves/ellheight
+608063649 1268 ../functions/elliptic_curves/ellheight
 634335038 816 ../functions/elliptic_curves/ellheightmatrix
 1800430023 717 ../functions/elliptic_curves/ellidentify
 2392968086 4998 ../functions/elliptic_curves/ellinit
@@ -272,7 +272,7 @@
 3276446358 587 ../functions/elliptic_curves/ellrankinit
 1626886641 842 ../functions/elliptic_curves/ellratpoints
 4215486523 901 ../functions/elliptic_curves/ellrootno
-640029200 1704 ../functions/elliptic_curves/ellsaturation
+84997485 1707 ../functions/elliptic_curves/ellsaturation
 4269707140 3186 ../functions/elliptic_curves/ellsea
 4215222441 1838 ../functions/elliptic_curves/ellsearch
 819897465 1154 ../functions/elliptic_curves/ellsigma
@@ -778,7 +778,7 @@
 868333029 539 ../functions/number_fields/nfhnfmod
 3712705818 9997 ../functions/number_fields/nfinit
 1575169407 243 ../functions/number_fields/nfisideal
-3572420998 3773 ../functions/number_fields/nfisincl
+155426524 3774 ../functions/number_fields/nfisincl
 2647928966 1623 ../functions/number_fields/nfisisom
 2329778617 859 ../functions/number_fields/nfislocalpower
 316659770 477 ../functions/number_fields/nfkermodpr
@@ -848,7 +848,7 @@
 1343463579 1090 ../functions/number_fields/rnfsteinitz
 3884469918 3966 ../functions/number_fields/subcyclohminus
 1205378073 9899 ../functions/number_fields/subcycloiwasawa
-3200996679 8807 ../functions/number_fields/subcyclopclgp
+2689943697 8823 ../functions/number_fields/subcyclopclgp
 2210359145 2616 ../functions/number_fields/subgrouplist
 958766459 7206 ../functions/number_theoretical/HEADER
 319433823 1118 ../functions/number_theoretical/addprimes
@@ -1101,7 +1101,7 @@
 3981882691 3461 ../functions/programming/forsquarefree
 3133784800 1264 ../functions/programming/forstep
 3772915069 2071 ../functions/programming/forsubgroup
-4218503910 1900 ../functions/programming/forsubset
+3620998327 2151 ../functions/programming/forsubset
 1926104899 2945 ../functions/programming/forvec
 1330788876 424 ../functions/programming/getabstime
 848335686 1748 ../functions/programming/getcache
@@ -1128,7 +1128,7 @@
 3477779139 1200 ../functions/programming/listsort
 3065531026 125 ../functions/programming/local
 980090815 2712 ../functions/programming/localbitprec
-605742576 2248 ../functions/programming/localprec
+2679672744 2218 ../functions/programming/localprec
 3283018625 1831 ../functions/programming/mapapply
 2224027908 296 ../functions/programming/mapdelete
 1070089863 515 ../functions/programming/mapget
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/functions/elliptic_curves/ellheight 
new/pari-2.17.4/src/functions/elliptic_curves/ellheight
--- old/pari-2.17.3/src/functions/elliptic_curves/ellheight     2025-10-01 
21:35:18.000000000 +0200
+++ new/pari-2.17.4/src/functions/elliptic_curves/ellheight     2026-06-11 
21:18:58.000000000 +0200
@@ -6,7 +6,7 @@
  height of the point P on elliptic curve E, resp. the value of the attached
  bilinear form at (P,Q).
 Doc: Let $E$ be an elliptic curve defined over $K = \Q$ or a number field,
- as output by \kbd{ellinit}; it need not be given by a minimal model
+ as output by \kbd{ellinit}; it needs not be given by a minimal model
  although the computation will be faster if it is.
 
  \item Without arguments $P,Q$, returns the Faltings height of the curve $E$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pari-2.17.3/src/functions/elliptic_curves/ellsaturation 
new/pari-2.17.4/src/functions/elliptic_curves/ellsaturation
--- old/pari-2.17.3/src/functions/elliptic_curves/ellsaturation 2024-09-30 
15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/functions/elliptic_curves/ellsaturation 2026-06-11 
21:19:01.000000000 +0200
@@ -5,13 +5,13 @@
 Help: ellsaturation(E,V,B): let E be an elliptic curve over Q
  and V be a vector of independent rational points on E of infinite order that
  generate a subgroup G of E(Q) of finite index.
- Return a new set W of the same length that generate a subgroup H of
+ Return a new set W of the same length that generates a subgroup H of
  E(Q) containing G and such that [E(Q):H] is not divisible by any prime
  number less than B.
 Doc: Let $E$ be an elliptic curve over $\Q$ and
  and $V$ be a set of independent non-torsion rational points on $E$ of infinite
- order that generate a subgroup $G$ of $E(\Q)$ of finite index.
- Return a new set $W$ of the same length that generate a subgroup $H$ of
+ order that generates a subgroup $G$ of $E(\Q)$ of finite index.
+ Return a new set $W$ of the same length that generates a subgroup $H$ of
  $E(\Q)$ containing $G$ and such that $[E(\Q):H]$ is not divisible by any
  prime number less than $B$. The running time is roughly quadratic in $B$.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/functions/number_fields/nfisincl 
new/pari-2.17.4/src/functions/number_fields/nfisincl
--- old/pari-2.17.3/src/functions/number_fields/nfisincl        2024-09-30 
15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/functions/number_fields/nfisincl        2026-06-11 
21:18:22.000000000 +0200
@@ -33,7 +33,7 @@
  invert in $\Q[X]/(g)$, this may be even faster than $\fl = 1$.
  \bprog
  ? T = x^6 + 3*x^4 - 6*x^3 + 3*x^2 + 18*x + 10;
- ? U = x^3 + 3*x^2 + 3*x - 2
+ ? U = x^3 + 3*x^2 + 3*x - 2;
  ? nfisincl(U, T)
  %3 = [24/179*x^5-27/179*x^4+80/179*x^3-234/179*x^2+380/179*x+94/179]
  ? a = nfisincl(U, T, 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pari-2.17.3/src/functions/number_fields/subcyclopclgp 
new/pari-2.17.4/src/functions/number_fields/subcyclopclgp
--- old/pari-2.17.3/src/functions/number_fields/subcyclopclgp   2025-09-30 
22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/functions/number_fields/subcyclopclgp   2026-06-11 
21:19:11.000000000 +0200
@@ -4,8 +4,8 @@
 Prototype: GGD0,L,
 Help: subcyclopclgp(fH,p,{flag=0}): Let F be the abelian
  number field contained in Q(zeta_f) corresponding to the subgroup H of
- (Z/fZ)^*. Returns the minus part of Iwasawa polynomials attached to the
- ideal class group of F.
+ (Z/fZ)^* and let p be a prime not dividing 2[F:Q]. Computes the p-Sylow
+ subgroup of the ideal class group of F.
 Doc: Let $F$ be the abelian number field contained in $\Q(\zeta_{f})$
  corresponding to the subgroup $H$ of $(\Z/f\Z)^{*}$, let $p > 2$ be an odd
  prime not dividing $[F:\Q]$. Computes the $p$-Sylow subgroup $A_{F}$ of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/functions/programming/forsubset 
new/pari-2.17.4/src/functions/programming/forsubset
--- old/pari-2.17.3/src/functions/programming/forsubset 2024-09-30 
15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/functions/programming/forsubset 2026-06-11 
21:18:17.000000000 +0200
@@ -23,7 +23,7 @@
   of integers s goes through k-subsets of {1, 2, ..., n}.
   The order is lexicographic among subsets of the same size and smaller
   subsets come first.
-Doc: if \var{nk} is a nonnegative integer $n$, evaluates \kbd{seq}, where
+Doc: if \var{nk} is an integer $n$, evaluates \kbd{seq}, where
  the formal variable $s$ goes through all subsets of $\{1, 2, \ldots, n\}$;
  if \var{nk} is a pair $[n,k]$ of integers, $s$ goes through subsets
  of size $k$ of $\{1, 2, \ldots, n\}$. In both cases $s$ goes through subsets
@@ -62,3 +62,7 @@
  ? binomial(40,35)
  %5 = 658008
  @eprog
+ The function is not useful for negative $n$ or $k$, but these corner cases
+ are supported nonetheless. When $n \leq 0$, we iterate through subsets of
+ the empty set, i.e., the empty set; when $k < 0$ no subset of the required
+ length exist and nothing happens.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/functions/programming/localprec 
new/pari-2.17.4/src/functions/programming/localprec
--- old/pari-2.17.3/src/functions/programming/localprec 2025-09-30 
22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/functions/programming/localprec 2026-06-11 
21:19:24.000000000 +0200
@@ -3,8 +3,7 @@
 C-Name: localprec
 Prototype: vG
 Help: localprec(p): set the real precision to p in the dynamic scope
- and return p.
-Doc: set the real precision to $p$ in the dynamic scope and return $p$.
+Doc: set the real precision to $p$ in the dynamic scope.
  All computations are performed as if \tet{realprecision} was $p$:
  transcendental constants (e.g.~\kbd{Pi}) and
  conversions from exact to floating point inexact data use $p$ decimal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/language/es.c 
new/pari-2.17.4/src/language/es.c
--- old/pari-2.17.3/src/language/es.c   2025-09-30 22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/language/es.c   2026-06-11 21:19:27.000000000 +0200
@@ -4379,13 +4379,11 @@
   if (x) writeGEN(x,f);
   else
   {
-    long v, maxv = pari_var_next();
-    for (v=0; v<maxv; v++)
-    {
-      entree *ep = varentries[v];
-      if (!ep) continue;
-      writenamedGEN((GEN)ep->value,ep->name,f);
-    }
+    entree *ep;
+    long i;
+    for (i = 0; i < functions_tblsz; i++)
+      for (ep = functions_hash[i]; ep; ep = ep->next)
+        if (EpVALENCE(ep) == EpVAR) writenamedGEN((GEN)ep->value,ep->name,f);
   }
   set_avma(av); fclose(f);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/language/eval.c 
new/pari-2.17.4/src/language/eval.c
--- old/pari-2.17.3/src/language/eval.c 2025-10-12 15:11:26.000000000 +0200
+++ new/pari-2.17.4/src/language/eval.c 2026-06-11 21:01:24.000000000 +0200
@@ -2393,7 +2393,8 @@
 GEN
 closure_callgenvec(GEN C, GEN args)
 {
-  long i, l = lg(args)-1, ar = closure_arity(C);
+  long ar = closure_arity(C), isvar = closure_is_variadic(C);
+  long i, l = lg(args)-1;
   st_alloc(ar);
   if (l > ar)
     pari_err(e_MISC,"too many parameters in user-defined function call");
@@ -2401,6 +2402,7 @@
     pari_err_TYPE("call", gel(args,l));
   for (i = 1; i <= l;  i++) gel(st,sp++) = gel(args,i);
   for(      ; i <= ar; i++) gel(st,sp++) = NULL;
+  if (isvar && l<ar) gel(st,sp-1) = cgetg(1,t_VEC);
   return closure_returnupto(C);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/language/init.h 
new/pari-2.17.4/src/language/init.h
--- old/pari-2.17.3/src/language/init.h 2025-10-18 10:06:33.000000000 +0200
+++ new/pari-2.17.4/src/language/init.h 2026-06-14 21:43:03.000000000 +0200
@@ -490,7 +490,7 @@
 {"ellrankinit",0,(void*)ellrankinit,12,"Gp","ellrankinit(E): if E is an 
elliptic curve over Q, initialize data for further calls to ellrank."},
 
{"ellratpoints",0,(void*)ellratpoints,12,"GGD0,L,","ellratpoints(E,h,{flag=0}): 
E being an rational model of an elliptic curve, return a vector containing the 
affine rational points on the curve of naive height less than h. If fl=1, stop 
as soon as a point is found."},
 {"ellrootno",0,(void*)ellrootno,12,"lGDG","ellrootno(E,{p}): root number for 
the L-function of the elliptic curve E/Q at a prime p (including 0, for the 
infinite place); global root number if p is omitted. If p is omitted, the curve 
can also be defined over a number field."},
-{"ellsaturation",0,(void*)ellsaturation,12,"GGLp","ellsaturation(E,V,B): let E 
be an elliptic curve over Q and V be a vector of independent rational points on 
E of infinite order that generate a subgroup G of E(Q) of finite index. Return 
a new set W of the same length that generate a subgroup H of E(Q) containing G 
and such that [E(Q):H] is not divisible by any prime number less than B."},
+{"ellsaturation",0,(void*)ellsaturation,12,"GGLp","ellsaturation(E,V,B): let E 
be an elliptic curve over Q and V be a vector of independent rational points on 
E of infinite order that generate a subgroup G of E(Q) of finite index. Return 
a new set W of the same length that generates a subgroup H of E(Q) containing G 
and such that [E(Q):H] is not divisible by any prime number less than B."},
 {"ellsea",0,(void*)ellsea,12,"GD0,L,","ellsea(E,{tors=0}): computes the order 
of the group E(Fq) for the elliptic curve E, defined over a finite field, using 
SEA algorithm, with early abort for curves (or their quadratic twist) with 
nonprime order."},
 {"ellsearch",0,(void*)ellsearch,12,"G","ellsearch(N): returns all curves in 
the elldata database matching constraint N:  given name (N = \"11a1\" or 
[11,0,1]), given isogeny class (N = \"11a\" or [11,0]), or given conductor (N = 
11, \"11\", or [11])."},
 {"ellsigma",0,(void*)ellsigma,12,"GDGD0,L,p","ellsigma(L,{z='x},{flag=0}): 
computes the value at z of the Weierstrass sigma function attached to the 
lattice L, as given by ellperiods(,1). If flag = 1, returns an arbitrary 
determination of the logarithm of sigma."},
@@ -771,7 +771,7 @@
 {"lngamma",0,(void*)glngamma,8,"Gp","lngamma(x): logarithm of the gamma 
function of x."},
 {"local",0,NULL,1,NULL,"local(x,...,z): declare x,...,z as (dynamically 
scoped) local variables."},
 {"localbitprec",0,(void*)localbitprec,1,"vG","localbitprec(p): set the real 
precision to p bits in the dynamic scope."},
-{"localprec",0,(void*)localprec,1,"vG","localprec(p): set the real precision 
to p in the dynamic scope and return p."},
+{"localprec",0,(void*)localprec,1,"vG","localprec(p): set the real precision 
to p in the dynamic scope"},
 {"log",0,(void*)glog,8,"Gp","log(x): natural logarithm of x."},
 {"log1p",0,(void*)glog1p,8,"Gp","log1p(x): log(1+x)"},
 {"logint",0,(void*)logint0,5,"lGGD&","logint(x,b,{&z}): return the largest 
non-negative integer e so that b^e <= x, where b > 1 is an integer and x >= 1 
is a real number. If the parameter z is present, set it to b^e."},
@@ -1267,7 +1267,7 @@
 {"strtime",0,(void*)strtime,1,"L","strtime(t): return a string describing the 
time t in milliseconds, in the format used by the GP timer."},
 {"subcyclohminus",0,(void*)subcyclohminus,10,"GDG","subcyclohminus(fH,{p=0}): 
Let F be the abelian number field contained in Q(zeta_f) corresponding to the 
subgroup H of (Z/fZ)^*. Let h be the relative class number h^-(F) and Q the 
Hasse unit index in {1,2}. If Q could be computed, returns [h, Q]; else returns 
[2h/Q, 0]."},
 
{"subcycloiwasawa",0,(void*)subcycloiwasawa,10,"GGD0,L,","subcycloiwasawa(fH,p,{n=0}):
 Let F be the abelian number field contained in Q(zeta_f) corresponding to the 
subgroup H of (Z/fZ)^*. Returns the minus part of Iwasawa polynomials attached 
to the cyclotomic Z_p extension of F."},
-{"subcyclopclgp",0,(void*)subcyclopclgp,10,"GGD0,L,","subcyclopclgp(fH,p,{flag=0}):
 Let F be the abelian number field contained in Q(zeta_f) corresponding to the 
subgroup H of (Z/fZ)^*. Returns the minus part of Iwasawa polynomials attached 
to the ideal class group of F."},
+{"subcyclopclgp",0,(void*)subcyclopclgp,10,"GGD0,L,","subcyclopclgp(fH,p,{flag=0}):
 Let F be the abelian number field contained in Q(zeta_f) corresponding to the 
subgroup H of (Z/fZ)^* and let p be a prime not dividing 2[F:Q]. Computes the 
p-Sylow subgroup of the ideal class group of F."},
 
{"subgrouplist",0,(void*)subgrouplist0,10,"GDGD0,L,","subgrouplist(cyc,{bound},{flag=0}):
 cyc being any object which has a '.cyc' method giving the cyclic components 
for a finite Abelian group G, outputs the list of subgroups of G (of index 
bounded by bound, if not omitted), given as HNF left divisors of the SNF matrix 
corresponding to G. If flag=0 (default) and 'cyc' is a bnr struture output by 
bnrinit, gives only the subgroups whose conductor is the modulus bnr.mod"},
 {"subst",0,(void*)gsubst,6,"GnG","subst(x,y,z): in expression x, replace the 
variable y by the expression z."},
 {"substpol",0,(void*)gsubstpol,6,"GGG","substpol(x,y,z): in expression x, 
replace the polynomial y by the expression z, using remainder decomposition of 
x."},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/modules/forsubset.c 
new/pari-2.17.4/src/modules/forsubset.c
--- old/pari-2.17.3/src/modules/forsubset.c     2024-02-27 22:12:25.000000000 
+0100
+++ new/pari-2.17.4/src/modules/forsubset.c     2026-06-11 21:18:17.000000000 
+0200
@@ -20,7 +20,9 @@
 {
   T->all = 0;
   T->first = 1;
+  if (n < 0) n = 0;
   T->n = n;
+  if (k < 0) k = n+1; /* impossible value */
   T->k = k;
   T->v = identity_perm(k);
 }
@@ -30,6 +32,7 @@
 {
   T->all = 1;
   T->first = 1;
+  if (n < 0) n = 0;
   T->n = n;
   T->k = 0;
   T->v = vecsmalltrunc_init(n + 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/apply 
new/pari-2.17.4/src/test/32/apply
--- old/pari-2.17.3/src/test/32/apply   2024-09-30 15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/test/32/apply   2026-06-11 21:01:24.000000000 +0200
@@ -25,6 +25,7 @@
 -9/19
 1: 2, 3
 15
+
   ***   at top-level: call(strprintf,["%d",10])
   ***                 ^-------------------------
   *** call: incorrect type in call (t_INT).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/cyclo 
new/pari-2.17.4/src/test/32/cyclo
--- old/pari-2.17.3/src/test/32/cyclo   2024-09-30 15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/test/32/cyclo   2026-06-14 21:43:17.000000000 +0200
@@ -53,10 +53,11 @@
 [x^4 + 1, x^6 + x^3 + 1]
 [x^4 + 1, x^4 - x^3 + x^2 - x + 1]
 [x^6 + x^3 + 1, x^4 - x^3 + x^2 - x + 1]
+[x^6 + x^3 + 1]
 1
 1
 1 + 2^2 + 2^3 + 2^6 + 2^7 + 2^10 + 2^11 + 2^14 + 2^15 + 2^18 + 2^19 + O(2^22
 )
 1 + 2^4 + 2^5 + 2^6 + 2^7 + 2^12 + 2^13 + 2^14 + 2^15 + 2^20 + 2^21 + 2^22 +
  O(2^23)
-Total time spent: 7
+Total time spent: 21
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/ell 
new/pari-2.17.4/src/test/32/ell
--- old/pari-2.17.3/src/test/32/ell     2025-09-30 22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/test/32/ell     2026-06-11 21:19:03.000000000 +0200
@@ -352,7 +352,10 @@
 30079 + 2.1287494904205475138877719874598854884*I]
 [-1.1547274830668428355945002349018042438, -0.828886258466578582202749882549
 09787812 + 0.52313677422798965199542236165917364573*I, -0.828886258466578582
-20274988254909787812 - 0.52313677422798965199542236165917364573*I]
+20274988254909787812 - 0.52313677422798965199542236165917364573*I, 1.0462735
+484559793039908447233183472915*I, -0.32584122460026425339175035235270636564 
++ 0.52313677422798965199542236165917364573*I, -0.325841224600264253391750352
+35270636564 - 0.52313677422798965199542236165917364573*I]
 [10351, [1/2, -1, -2, 5/4], 1, [11, 1; 941, 1], [[1, 5, 0, 1], [1, 5, 0, 1]]
 ]
 [10351, [1, -1, 0, -1], 1, [11, 1; 941, 1], [[1, 5, 0, 1], [1, 5, 0, 1]]]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/ellff 
new/pari-2.17.4/src/test/32/ellff
--- old/pari-2.17.3/src/test/32/ellff   2025-09-30 22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/test/32/ellff   2026-06-11 21:22:58.000000000 +0200
@@ -1,4 +1,4 @@
-  ***   Warning: new stack size = 10000000 (9.537 Mbytes).
+  ***   Warning: new stack size = 110000000 (104.904 Mbytes).
 [[Mod(325254531735269032, 18446744073709551557), Mod(2692423357974964052, 18
 446744073709551557)]]
 18446744078921414430
@@ -6,7 +6,8 @@
 88
 [0]
 [0]
+[0]
 Mod(1, 2)*a1^2*x^2 + Mod(1, 2)*a3^2
 63759030914642012164449632
 925103102313118416118
-Total time spent: 7832
+Total time spent: 17842
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/fflog 
new/pari-2.17.4/src/test/32/fflog
--- old/pari-2.17.3/src/test/32/fflog   2024-09-30 15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/test/32/fflog   2026-06-11 21:20:14.000000000 +0200
@@ -22,10 +22,11 @@
 1
 1
 1
+1
 error("incorrect type in generic discrete logarithm (order factorization) (t
 _COMPLEX).")
 error("incorrect type in generic discrete logarithm (order factorization) (t
 _INT).")
 error("incorrect type in factorback [not a factorization] (t_MAT).")
 error("incorrect type in factorback [not an exponent vector] (t_COL).")
-Total time spent: 3135
+Total time spent: 2770
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/forsubset 
new/pari-2.17.4/src/test/32/forsubset
--- old/pari-2.17.3/src/test/32/forsubset       2024-02-27 22:12:25.000000000 
+0100
+++ new/pari-2.17.4/src/test/32/forsubset       2026-06-11 21:18:17.000000000 
+0200
@@ -14,9 +14,15 @@
 Vecsmall([1, 3, 4])
 Vecsmall([2, 3, 4])
 Vecsmall([1, 2, 3, 4])
-Vecsmall([])
-Vecsmall([])
+0: Vecsmall([])
+-1: Vecsmall([])
+-2: Vecsmall([])
+[0, 0]: Vecsmall([])
+[0, 1]: 
+[2, -1]: 
+[-1, -2]: 
+[1, -2]: 
   ***   at top-level: forsubset('x,s,)
   ***                 ^----------------
   ***   incorrect type in forsubset (t_POL).
-Total time spent: 0
+Total time spent: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/gamma 
new/pari-2.17.4/src/test/32/gamma
--- old/pari-2.17.3/src/test/32/gamma   2024-12-16 23:27:30.000000000 +0100
+++ new/pari-2.17.4/src/test/32/gamma   2026-06-11 21:22:48.000000000 +0200
@@ -46,34 +46,34 @@
 341327827815714280332882428196*I)*x^5 + O(x^6), (0.4630000966227637862983265
 1818418579441 - 0.29423354275931886558301361715690299591*I) + (-0.1314470684
 1206482826336545701940521483 + 0.26665285034506621240269537763137008139*I)*x
- + (-0.011437224476747988906741668704106563491 - 0.1586432893309803292093963
-3151710419078*I)*x^2 + (0.046584694840674886585212398591977021508 + 0.069897
-991439671928929769488127583805883*I)*x^3 + (-0.03887853484520287170408536521
-7155229737 - 0.020172821170663913907857140166441214100*I)*x^4 + (0.022560335
-060417259303085193102966460794 - 0.00036753612083320862918606972353477943052
+ + (-0.011437224476747988906741668704106563489 - 0.1586432893309803292093963
+3151710419078*I)*x^2 + (0.046584694840674886585212398591977021507 + 0.069897
+991439671928929769488127583805882*I)*x^3 + (-0.03887853484520287170408536521
+7155229736 - 0.020172821170663913907857140166441214099*I)*x^4 + (0.022560335
+060417259303085193102966460794 - 0.00036753612083320862918606972353477943083
 *I)*x^5 + O(x^6), (-0.13144706841206482826336545701940521483 + 0.26665285034
-506621240269537763137008139*I) + (-0.022874448953495977813483337408213126982
- - 0.31728657866196065841879266303420838157*I)*x + (0.1397540845220246597556
-3719577593106453 + 0.20969397431901578678930846438275141765*I)*x^2 + (-0.155
+506621240269537763137008139*I) + (-0.022874448953495977813483337408213126979
+ - 0.31728657866196065841879266303420838156*I)*x + (0.1397540845220246597556
+3719577593106452 + 0.20969397431901578678930846438275141765*I)*x^2 + (-0.155
 51413938081148681634146086862091895 - 0.080691284682655655631428560665764856
-399*I)*x^3 + (0.11280167530208629651542596551483230397 - 0.00183768060416604
-31459303486176738971526*I)*x^4 + (-0.060385141064853397644954035047742260711
+397*I)*x^3 + (0.11280167530208629651542596551483230397 - 0.00183768060416604
+31459303486176738971541*I)*x^4 + (-0.060385141064853397644954035047742260710
  + 0.033280565716561889360694008049839150654*I)*x^5 + O(x^6), (-0.0228744489
-53495977813483337408213126982 - 0.31728657866196065841879266303420838157*I) 
-+ (0.27950816904404931951127439155186212905 + 0.4193879486380315735786169287
-6550283530*I)*x + (-0.46654241814243446044902438260586275685 - 0.24207385404
-796696689428568199729456920*I)*x^2 + (0.451206701208345186061703862059329215
-88 - 0.0073507224166641725837213944706955886104*I)*x^3 + (-0.301925705324266
+53495977813483337408213126979 - 0.31728657866196065841879266303420838156*I) 
++ (0.27950816904404931951127439155186212904 + 0.4193879486380315735786169287
+6550283529*I)*x + (-0.46654241814243446044902438260586275684 - 0.24207385404
+796696689428568199729456919*I)*x^2 + (0.451206701208345186061703862059329215
+87 - 0.0073507224166641725837213944706955886171*I)*x^3 + (-0.301925705324266
 98822477017523871130355 + 0.16640282858280944680347004024919575327*I)*x^4 + 
 (0.13442567256047517668092840739154252347 - 0.202713401516738016734740658864
-97663399*I)*x^5 + O(x^6), (0.27950816904404931951127439155186212905 + 0.4193
-8794863803157357861692876550283530*I) + (-0.93308483628486892089804876521172
-551370 - 0.48414770809593393378857136399458913840*I)*x + (1.3536201036250355
-581851115861779876476 - 0.022052167249992517751164183412086765831*I)*x^2 + (
+97663400*I)*x^5 + O(x^6), (0.27950816904404931951127439155186212904 + 0.4193
+8794863803157357861692876550283529*I) + (-0.93308483628486892089804876521172
+551367 - 0.48414770809593393378857136399458913838*I)*x + (1.3536201036250355
+581851115861779876476 - 0.022052167249992517751164183412086765851*I)*x^2 + (
 -1.2077028212970679528990807009548452142 + 0.6656113143312377872138801609967
-8301307*I)*x^3 + (0.67212836280237588340464203695771261736 - 1.0135670075836
-900836737032943248831700*I)*x^4 + (-0.10528231491150367363825212448097382743
- + 0.96553709445705650132059416641866849116*I)*x^5 + O(x^6)]
+8301309*I)*x^3 + (0.67212836280237588340464203695771261734 - 1.0135670075836
+900836737032943248831700*I)*x^4 + (-0.10528231491150367363825212448097382742
+ + 0.96553709445705650132059416641866849117*I)*x^5 + O(x^6)]
 [-0.57721566490153286060651209008240243104 + 1.64493406684822643647241516664
 60251892*x - 1.2020569031595942853997381615114499908*x^2 + 1.082323233711138
 1915160036965411679028*x^3 - 1.0369277551433699263313654864570341681*x^4 + 1
@@ -100,6 +100,15 @@
 334145745480110896235037083*x^2 + O(x^3), -2*x^-3 - 0.1541138063191885707994
 7632302289998153 + 12.868939402266829149096022179247007417*x + O(x^2), 6*x^-
 4 + 12.868939402266829149096022179247007417 + O(x), -24*x^-5 + O(x^0)]
+-x^-1 - 0.57721566490153286060651209008240243104 + 1.64493406684822643647241
+51666460251892*x - 1.2020569031595942853997381615114499908*x^2 + 1.082323233
+7111381915160036965411679028*x^3 + O(x^4)
+-x^-2 - 0.57721566490153286060651209008240243104 + O(x^2)
+-0.57721566490153286060651209008240243104 + 1.644934066848226436472415166646
+0251892*x - 1.2020569031595942853997381615114499908*x^2 + 1.0823232337111381
+915160036965411679028*x^3 - 1.0369277551433699263313654864570341681*x^4 + 1.
+0173430619844491397145179297909205279*x^5 + O(x^6)
+-0.57721566490153286060651209008240243104 + O(x^6)
 8.9348022005446793094172454999380755676
 3.2317006071311007300714876688669951960 E616
 -3.5449077018110320545963349666822903656 - 0.1293535897955400553154795370758
@@ -110,10 +119,6 @@
 -0.57721566490153286060651209008240243104*a*x + O(x^2)
   *** gamma: Warning: normalizing a series with 0 leading term.
 2*x^-1 + O(x^0)
--x^-1 - 0.57721566490153286060651209008240243104 + 1.64493406684822643647241
-51666460251892*x - 1.2020569031595942853997381615114499908*x^2 + 1.082323233
-7111381915160036965411679028*x^3 - 1.0369277551433699263313654864570341681*x
-^4 + 1.0173430619844491397145179297909205279*x^5 + O(x^6)
 x^-1 - 0.57721566490153286060651209008240243104 + 0.989055995327972555395395
 65150063470794*x - 0.90747907608088628901656016735627511493*x^2 + 0.98172808
 683440018733638029402185085036*x^3 - 0.9819950689031452021047014137913746755
@@ -127,23 +132,19 @@
 4377470976218155924961095682808954 E-960, 7.89834560545752902057243432280120
 14193 E-1080]
 [277.25887222397812376689284858327062723 + 1.5707963267948966192313216916397
-514421*I, -7.4984840694781547740882221881403267677 E-242 - 3.872591914849318
-2728180306332863518476 E-121*I, 1.4996968138956309548176444376280653535 E-24
-1 - 5.8077137562175031832834499989895222158 E-362*I, 6.747271600826120240791
-4745773506176966 E-482 + 1.1615427512435006366566899997979044432 E-361*I, -1
-.3494543201652240481582949154701235393 E-481 + 1.045177177946066001069143459
-3734646755 E-601*I, -2.0237723444494811997063282748366621553 E-721 - 2.09035
-43558921320021382869187469293510 E-601*I, 4.04754468889896239941265654967332
-43106 E-721 - 4.7023466511664263045854855928903043581 E-841*I, 1.27471887354
-88109077962480547841404477 E-960 + 9.4046933023328526091709711857806087161 E
--841*I, -2.5494377470976218155924961095682808954 E-960 + 3.94917280272876451
-02862171614006007097 E-1080*I, -1.3764181199571211681456298903009397326 E-11
-99 - 7.8983456054575290205724343228012014193 E-1080*I]
+514421*I, 0.E-177 - 3.8725919148493182728180306332863518476 E-121*I, 1.49969
+68138956309548176444376280653535 E-241 + 0.E-298*I, 0.E-418 + 1.161542751243
+5006366566899997979044432 E-361*I, -1.3494543201652240481582949154701235393 
+E-481 + 0.E-538*I, 0.E-658 - 2.0903543558921320021382869187469293510 E-601*I
+, 4.0475446888989623994126565496733243106 E-721 + 0.E-777*I, 0.E-897 + 9.404
+6933023328526091709711857806087161 E-841*I, -2.54943774709762181559249610956
+82808954 E-960 + 0.E-1016*I, 0.E-1136 - 7.8983456054575290205724343228012014
+193 E-1080*I]
 [0.70315664064524318722569033366791109947, 9.3792466449891237538616899443825
-200120, -0.23620405164172740300374166856770727812, 194.594276219187622421625
-51787389029643, -0.31375599950673136337542809687292720373, 15381.64852802630
-3808998957195309894170, -1.3180061075500352022813739032757796477, 2580876.87
-11348436068076206992583434680, -11.146030731869932467590724595498400233, 743
+200121, -0.23620405164172740300374166856770727805, 194.594276219187622421625
+51787389029643, -0.31375599950673136337542809687292720721, 15381.64852802630
+3808998957195309894170, -1.3180061075500352022813739032757799609, 2580876.87
+11348436068076206992583434680, -11.146030731869932467590724595498400849, 743
 190865.27947328456252812843702470971]
 [-x^-1 + O(x^0), x^-2 + O(x^-1), -2*x^-3 + O(x^-2), 6*x^-4 + O(x^-3), -24*x^
 -5 + O(x^-4), 120*x^-6 + O(x^-5), -720*x^-7 + O(x^-6), 5040*x^-8 + O(x^-7), 
@@ -232,4 +233,4 @@
   ***   at top-level: psi(-1)
   ***                 ^-------
   *** psi: domain error in psi: argument = nonpositive integer
-Total time spent: 21
+Total time spent: 23
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/io 
new/pari-2.17.4/src/test/32/io
--- old/pari-2.17.3/src/test/32/io      2024-02-27 22:12:25.000000000 +0100
+++ new/pari-2.17.4/src/test/32/io      2026-06-11 21:19:27.000000000 +0200
@@ -7,7 +7,9 @@
 0
 setting x
 setting y
-y
+setting del
+setting F
+"io-testfile"
 0
 List([])
 0
@@ -85,4 +87,4 @@
   ***   at top-level: fileflush('x)
   ***                 ^-------------
   *** fileflush: incorrect type in fileflush (t_POL).
-Total time spent: 0
+Total time spent: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/version 
new/pari-2.17.4/src/test/32/version
--- old/pari-2.17.3/src/test/32/version 2025-09-30 22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/test/32/version 2026-06-10 22:39:14.000000000 +0200
@@ -1,2 +1,2 @@
-[2, 17, 3]
+[2, 17, 4]
 Total time spent: 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/32/zetahurwitz 
new/pari-2.17.4/src/test/32/zetahurwitz
--- old/pari-2.17.3/src/test/32/zetahurwitz     2025-09-30 22:44:30.000000000 
+0200
+++ new/pari-2.17.4/src/test/32/zetahurwitz     2026-06-11 21:21:16.000000000 
+0200
@@ -1,5 +1,5 @@
 -39
--39
+-oo
 -oo
 -oo
 -38
@@ -67,6 +67,7 @@
 71774*I
 -0.0012500000000000000000000000000000000000 - 0.0499791562313333323211842510
 48648972025*I
+1.8836186042287165218879589505430686402 E-79
   ***   at top-level: zetahurwitz(1,Pi)
   ***                 ^-----------------
   *** zetahurwitz: domain error in zetahurwitz: s = 1
@@ -83,4 +84,4 @@
   ***   at top-level: zetahurwitz([],[])
   ***                 ^------------------
   *** zetahurwitz: incorrect type in zetahurwitz (t_VEC).
-Total time spent: 45
+Total time spent: 49
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/apply 
new/pari-2.17.4/src/test/in/apply
--- old/pari-2.17.3/src/test/in/apply   2024-09-30 15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/test/in/apply   2026-06-11 21:01:24.000000000 +0200
@@ -26,5 +26,6 @@
 printfnl(format,args[..]) = call(printf,[format,args]);print();
 printfnl("%s: %s, %s",1,2,3)
 call("_*_",[3,5])
+call(printsep, [":"])
 \\errors
 call(strprintf, ["%d", 10])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/cyclo 
new/pari-2.17.4/src/test/in/cyclo
--- old/pari-2.17.3/src/test/in/cyclo   2024-09-30 15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/test/in/cyclo   2026-06-14 21:42:20.000000000 +0200
@@ -17,6 +17,7 @@
     )
   );
 }
+polcyclofactors(((x^6+x^3+1)*(3*x^3+1))^2) \\ #2680
 poliscycloprod((x-1)^2)
 poliscycloprod((x+1)^2*(x-1))
 test(n,t)= if (polcyclo(n,t) != subst(polcyclo(n),x,t), error([n,t]));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/ellff 
new/pari-2.17.4/src/test/in/ellff
--- old/pari-2.17.3/src/test/in/ellff   2025-09-30 22:44:30.000000000 +0200
+++ new/pari-2.17.4/src/test/in/ellff   2026-06-11 21:22:58.000000000 +0200
@@ -1,4 +1,4 @@
-default(parisize,"10M"); \\ overflows 8M
+default(parisize,"110M"); \\ overflows 108M without GMP
 test(p,n=0,v='a,w=1)=
 {
   my(a=if(n,ffgen(p^n,v),p));
@@ -64,6 +64,9 @@
 elladd(E,ellsub(E,R,P),ellneg(E,Q))
 N=ellcard(E);ellmul(E,P,N)
 
+a=ffgen([53,36],'a); E=ellinit([a,a]);
+N=ellcard(E); P=random(E); ellmul(E,P,N)
+
 checkorder(E, N)=
 {
   for(i=1,4,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/fflog 
new/pari-2.17.4/src/test/in/fflog
--- old/pari-2.17.3/src/test/in/fflog   2024-09-30 15:49:49.000000000 +0200
+++ new/pari-2.17.4/src/test/in/fflog   2026-06-11 21:20:14.000000000 +0200
@@ -37,6 +37,8 @@
 test(polcyclo(7),1073741833)
 test(ffinit(5,24),5,5^24-1)
 
+my(b,t=ffgen(29^544,'t));sqrtn(t^0,17,&b);fflog(b^5,b,17)==5 \\#2676
+
 p=2^64+13; g=ffprimroot(ffgen(p^2), &o); a=2*g^0;
 g^fflog(a,g,o) == a
 v=[I,-1,Mat(1),matid(2)/2];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/forsubset 
new/pari-2.17.4/src/test/in/forsubset
--- old/pari-2.17.3/src/test/in/forsubset       2024-02-27 22:12:25.000000000 
+0100
+++ new/pari-2.17.4/src/test/in/forsubset       2026-06-11 21:18:17.000000000 
+0200
@@ -21,11 +21,16 @@
 test(5);
 
 forsubset(4,s,print(s));
+
 \\ corner cases
-forsubset([0,0],s,print(s))
-forsubset(0,s,print(s))
-forsubset([0,1],s,print(s))
-forsubset(-1,s,)
-forsubset([2,-1],s,)
+f(nk) = print1(nk,": "); forsubset(nk,s,print(s));
+f(0)
+f(-1)
+f(-2)
+f([0,0])
+f([0,1])
+f([2,-1])
+f([-1,-2])
+f([1,-2])
 \\ errors
 forsubset('x,s,)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/gamma 
new/pari-2.17.4/src/test/in/gamma
--- old/pari-2.17.3/src/test/in/gamma   2024-12-16 23:27:30.000000000 +0100
+++ new/pari-2.17.4/src/test/in/gamma   2026-06-11 21:20:36.000000000 +0200
@@ -11,6 +11,12 @@
 [psi(2+I+x,d)|d<-[0..4]]
 [psi(1+x,d)|d<-[0..4]]
 [psi(-2+x,d)|d<-[0..4]]
+
+psi(x+O(x^6))
+psi(x^2+O(x^6))
+psi(1+x+O(x^6))
+psi(1+O(x^6))
+
 psi(-1/2,1)
 psi(2^-1024,1)
 gamma(-1/2+x)
@@ -18,7 +24,6 @@
 lngamma(1+a*x+O(x^2))
 gamma(0.+1/2*x+O(x^2))
 
-psi(x)
 gamma(x)
 gamma(1000)
 [psi(2^400,d)|d<-[0..9]]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pari-2.17.3/src/test/in/zetahurwitz 
new/pari-2.17.4/src/test/in/zetahurwitz
--- old/pari-2.17.3/src/test/in/zetahurwitz     2025-09-30 22:44:30.000000000 
+0200
+++ new/pari-2.17.4/src/test/in/zetahurwitz     2026-06-11 21:21:16.000000000 
+0200
@@ -29,6 +29,7 @@
 zetahurwitz(-2,I)
 zetahurwitz(1/2+100000*I,1/2)
 zetahurwitz(2,20*I)
+zetahurwitz(165,3) \\ #2673
 
 \\ ERRORS
 zetahurwitz(1,Pi)

Reply via email to