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)
