Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pari for openSUSE:Factory checked in at 2022-11-19 18:09:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pari (Old) and /work/SRC/openSUSE:Factory/.pari.new.1597 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pari" Sat Nov 19 18:09:13 2022 rev:29 rq:1036697 version:2.15.1 Changes: -------- --- /work/SRC/openSUSE:Factory/pari/pari.changes 2022-11-01 13:43:19.660138487 +0100 +++ /work/SRC/openSUSE:Factory/.pari.new.1597/pari.changes 2022-11-19 18:09:25.806475547 +0100 @@ -1,0 +2,7 @@ +Fri Nov 18 17:44:42 UTC 2022 - Jan Engelhardt <jeng...@inai.de> + +- Update to release 2.15.1 + * Resolve SIGSEGV with seralgdep and bnfinit functions + * Resolve obscure oo loop in solve when solution ~ 0 + +------------------------------------------------------------------- Old: ---- pari-2.15.0.tar.gz pari-2.15.0.tar.gz.asc New: ---- pari-2.15.1.tar.gz pari-2.15.1.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pari.spec ++++++ --- /var/tmp/diff_new_pack.r0kIWs/_old 2022-11-19 18:09:26.418479006 +0100 +++ /var/tmp/diff_new_pack.r0kIWs/_new 2022-11-19 18:09:26.422479029 +0100 @@ -28,7 +28,7 @@ %global sover 8 %global lname libpari-gmp-tls%sover Name: pari -Version: 2.15.0 +Version: 2.15.1 Release: 0 Summary: Computer Algebra System for computations in Number Theory License: GPL-2.0-only ++++++ pari-2.15.0.tar.gz -> pari-2.15.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/CHANGES new/pari-2.15.1/CHANGES --- old/pari-2.15.0/CHANGES 2022-09-19 15:05:13.000000000 +0200 +++ new/pari-2.15.1/CHANGES 2022-11-02 11:36:26.000000000 +0100 @@ -1,4 +1,18 @@ Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/ + +Done for version 2.15.1 (released 02/11/2022): + Fixed +BA 1- ploth long help was misformatted [F1] + 2- polredbest(y^4 - y^3 - 1/4, 1) -> Error [#2414] [F2] + 3- mathnf over polynomial rings: wrong when rank not maximal [#2415] [F3] +BA 4- seralgdep(Ser([0,1,0,u]*Mod(1,(u^2+u+1)*Mod(1,2)),y),2,2) -> SEGV [F4] + 5- polroots(4*x^3+4*x^2+28*x+144) -> overflow [#2418] [F5] + 6- conversion to float of t_QUAD with t_FRAC components [#2419] [F6] + 7- bnfinit(x^3-810693844986180*x-30702939461011257135364,1).fu + -> wrong result or SEGV [#2420] [F7] + 8- [1,2]*[3,4] -> strange error message about qfbcomp [F8] + 9- obscure oo loop in solve when solution ~ 0 [#2412] [F9] + Done for version 2.15.0 (released 19/09/2022): Fixed 1- slowdown in zeta (e.g. zeta(Pi) at \p500) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/config/version new/pari-2.15.1/config/version --- old/pari-2.15.0/config/version 2022-09-19 15:15:40.000000000 +0200 +++ new/pari-2.15.1/config/version 2022-11-02 11:36:43.000000000 +0100 @@ -5,7 +5,7 @@ VersionMinor='15' # Patch level -patch='0' +patch='1' # Version code version_code=`expr $VersionMajor \\* 65536 + $VersionMinor \\* 256 + $patch` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/doc/refmacro.tex new/pari-2.15.1/doc/refmacro.tex --- old/pari-2.15.0/doc/refmacro.tex 2022-09-19 15:05:13.000000000 +0200 +++ new/pari-2.15.1/doc/refmacro.tex 2022-11-02 10:54:54.000000000 +0100 @@ -8,7 +8,7 @@ % file. \def\versionnumber{2.38}% Version of these reference cards -\def\PARIversion{2.15.0}% Version of PARI described on these reference cards +\def\PARIversion{2.15.1}% Version of PARI described on these reference cards \def\year{2022} \def\month{August} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/doc/usersch3.tex new/pari-2.15.1/doc/usersch3.tex --- old/pari-2.15.0/doc/usersch3.tex 2022-09-18 15:21:10.000000000 +0200 +++ new/pari-2.15.1/doc/usersch3.tex 2022-10-06 01:54:01.000000000 +0200 @@ -4109,7 +4109,7 @@ %3 = 0 ? Pol(0,'x) == Pol(0,'y) \\ equal (constant: ignore variable) %4 = 1 -? Pol(0,'x) == Pol(0,'y) \\ not identical +? Pol(0,'x) === Pol(0,'y) \\ not identical %5 = 0 ? 0 == Pol(0) \\ equal @@ -26267,11 +26267,11 @@ 0, 0, 0,1; 1, 0, 0,0; 0,-1, 0,0]; - mk = [0, 0, 0, 0; + mk = [0, 0, 0, -1; 0, 0,-1, 0; 0, 1, 0, 0; - 1, 0, 0,-1]; - A = alginit(nfinit(y), [matid(4), mi,mj,mk], 0); } + 1, 0, 0, 0]; + A = alginit(nfinit(y), [matid(4), mi,mj,mk], , 0); } @eprog represents (in a complicated way) the quaternion algebra $(-1,-1)_\Q$. See below for a simpler solution. @@ -36090,7 +36090,9 @@ @eprog\noindent will draw respectively a circle and a circle cut by the line $y=x$. -The library syntax is \fun{GEN}{ploth0}{GEN X, GEN b, GEN expr, long flag, long prec}. +\item $8192 = \kbd{no_MinMax}$: do not print the boundary numbers (in both directions). + +\synt{ploth}{void *E, GEN (*eval)(void*, GEN), GEN a, GEN b, long flag, long n, long prec}, \subsec{plothexport$(\var{fmt}, X=a,b,\var{expr},\{\var{flags}=0\},\{n=0\})$}\kbdsidx{plothexport}\label{se:plothexport} Plot of expression \var{expr}, $X$ goes from $a$ to $b$ in high diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/doc/usersch5.tex new/pari-2.15.1/doc/usersch5.tex --- old/pari-2.15.0/doc/usersch5.tex 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/doc/usersch5.tex 2022-10-30 17:07:08.000000000 +0100 @@ -2485,7 +2485,7 @@ \fun{long}{itos}{GEN x} converts the \typ{INT}~\kbd{x} to a \kbd{long} if possible, otherwise raise an exception. We consider the conversion to be possible if and only if $|x| \leq \kbd{LONG\_MAX}$, i.e. $|x| < 2^{63}$ -on a 64-bit architecture. Since the range is symetric, the output of +on a 64-bit architecture. Since the range is symmetric, the output of \kbd{itos} can safely be negated. \fun{long}{itos_or_0}{GEN x} converts the \typ{INT}~\kbd{x} to a \kbd{long} if @@ -9467,7 +9467,7 @@ \fun{GEN}{RgC_RgV_mulrealsym}{GEN x, GEN y} returns the real part of $x\times y$ (whose entries are \typ{INT}, \typ{FRAC}, \typ{REAL} or \typ{COMPLEX}), -assuming the result is symetric. +assuming the result is symmetric. The following two functions are not well defined in general and only provided for convenience in specific cases: @@ -9587,7 +9587,7 @@ \fun{int}{RgM_is_ZM}{GEN x} return 1 if the \typ{MAT}~$x$ has only \typ{INT} coefficients, and 0 otherwise. -\fun{long}{qfiseven}{GEN M} return 1 if the square symetric typ{ZM}~$x$ +\fun{long}{qfiseven}{GEN M} return 1 if the square symmetric typ{ZM}~$x$ is an even quadratic form (all diagonal coefficients are even), and 0 otherwise. \fun{int}{RgM_is_QM}{GEN x} return 1 if the \typ{MAT}~$x$ has only diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/F2xqE.c new/pari-2.15.1/src/basemath/F2xqE.c --- old/pari-2.15.0/src/basemath/F2xqE.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/F2xqE.c 2022-10-06 00:56:00.000000000 +0200 @@ -115,7 +115,7 @@ if (typ(a)==t_VECSMALL) { GEN a2 = a; - if (!lgpol(gel(P,1))) return ellinf(); + if (!lgpol(gel(P,1))) { *slope = NULL; return ellinf(); } *slope = F2x_add(x, F2xq_div(y, x, T)); Q = cgetg(3,t_VEC); gel(Q, 1) = F2x_add(F2xq_sqr(*slope, T), F2x_add(*slope, a2)); @@ -144,8 +144,8 @@ F2xqE_add_slope(GEN P, GEN Q, GEN a, GEN T, GEN *slope) { GEN Px, Py, Qx, Qy, R; - if (ell_is_inf(P)) return Q; - if (ell_is_inf(Q)) return P; + if (ell_is_inf(P)) { *slope = NULL; return Q; } + if (ell_is_inf(Q)) { *slope = NULL; return P; } Px = gel(P,1); Py = gel(P,2); Qx = gel(Q,1); Qy = gel(Q,2); if (F2x_equal(Px, Qx)) @@ -153,7 +153,7 @@ if (F2x_equal(Py, Qy)) return F2xqE_dbl_slope(P, a, T, slope); else - return ellinf(); + { *slope = NULL; return ellinf(); } } *slope = F2xq_div(F2x_add(Py, Qy), F2x_add(Px, Qx), T); R = cgetg(3,t_VEC); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/alglin1.c new/pari-2.15.1/src/basemath/alglin1.c --- old/pari-2.15.0/src/basemath/alglin1.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/alglin1.c 2022-10-30 17:07:08.000000000 +0100 @@ -1950,8 +1950,13 @@ ulong l= p[2]; GEN Tl = ZXT_to_FlxT(T,l); GEN Ml = ZXM_to_FlxM(x, l, get_Flx_var(Tl)); - GEN p1 = FlxM_to_ZXM(FlxqM_ker(Ml,Tl,l)); - return gerepileupto(ltop,p1); + GEN p1 = FlxqM_ker_i(Ml, Tl, l, deplin); + if (deplin) + { + if (!p1) return gc_NULL(ltop); + return gerepileupto(ltop, FlxC_to_ZXC(p1)); + } + else return gerepileupto(ltop, FlxM_to_ZXM(p1)); } return FqM_ker_gen(x, T, p, deplin); } @@ -3661,6 +3666,7 @@ GEN b, T = RgX_to_FpX(pol, p); if (signe(T) == 0) pari_err_OP("deplin",x,pol); b = FqM_deplin(RgM_to_FqM(x, T, p), T, p); + if (!b) return gc_NULL(av); return gerepileupto(av, b); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/alglin2.c new/pari-2.15.1/src/basemath/alglin2.c --- old/pari-2.15.0/src/basemath/alglin2.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/alglin2.c 2022-10-26 13:46:05.000000000 +0200 @@ -1574,7 +1574,7 @@ } } -/* Gauss reduction (arbitrary symetric matrix, only the part above the +/* Gauss reduction (arbitrary symmetric matrix, only the part above the * diagonal is considered). If signature is nonzero, return only the * signature, in which case gsigne() should be defined for elements of a. */ static GEN @@ -1692,7 +1692,7 @@ affrr(y1,y); } -/* Diagonalization of a REAL symetric matrix. Return a vector [L, r]: +/* Diagonalization of a REAL symmetric matrix. Return a vector [L, r]: * L = vector of eigenvalues * r = matrix of eigenvectors */ GEN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/base1.c new/pari-2.15.1/src/basemath/base1.c --- old/pari-2.15.0/src/basemath/base1.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/base1.c 2022-10-30 17:07:08.000000000 +0100 @@ -2612,17 +2612,17 @@ *px = x; } static GEN -polredbest_i(GEN T0, long flag) +polredbest_i(GEN T, long flag) { - GEN T = T0, a; nfmaxord_t S; + GEN a; nfinit_basic_partial(&S, T); polredbest_aux(&S, NULL, &T, NULL, flag? &a: NULL); if (flag == 2) T = mkvec2(T, a); else if (flag == 1) { - GEN b = (T0 == T)? pol_x(varn(T)): QXQ_reverse(a, T0); + GEN b = (S.T0 == T)? pol_x(varn(T)): QXQ_reverse(a, S.T0); /* charpoly(Mod(a,T0)) = T; charpoly(Mod(b,T)) = S.x */ if (degpol(T) == 1) b = grem(b,T); T = mkvec2(T, mkpolmod(b,T)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/bibli1.c new/pari-2.15.1/src/basemath/bibli1.c --- old/pari-2.15.0/src/basemath/bibli1.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/bibli1.c 2022-10-30 17:07:08.000000000 +0100 @@ -1963,7 +1963,7 @@ retmkvec3(gen_0, gen_0, cgetg(1,t_MAT)); } u = lllfp(a, 0.75, LLL_GRAM | LLL_IM); - if (lg(u) != lg(a)) return NULL; + if (lg(u) != lg(a)) return gc_NULL(av); r = qf_apply_RgM(a,u); i = gprecision(r); if (i) @@ -1974,7 +1974,7 @@ } if (DEBUGLEVEL>2) err_printf("first LLL: prec = %ld\n", prec); r = qfgaussred_positive(r); - if (!r) return NULL; + if (!r) return gc_NULL(av); for (i=1; i<l; i++) { GEN s = gsqrt(gcoeff(r,i,i), prec); @@ -1984,12 +1984,12 @@ } /* now r~ * r = a in LLL basis */ rinv = RgM_inv_upper(r); - if (!rinv) return NULL; + if (!rinv) return gc_NULL(av); rinvtrans = shallowtrans(rinv); if (DEBUGLEVEL>2) err_printf("Fincke-Pohst, final LLL: prec = %ld\n", gprecision(rinvtrans)); v = lll(rinvtrans); - if (lg(v) != lg(rinvtrans)) return NULL; + if (lg(v) != lg(rinvtrans)) return gc_NULL(av); rinvtrans = RgM_mul(rinvtrans, v); v = ZM_inv(shallowtrans(v),NULL); @@ -2009,15 +2009,14 @@ GEN q; if (CHECK && CHECK->f_init) bound = CHECK->f_init(CHECK, r, u); q = gaussred_from_QR(r, gprecision(vnorm)); - if (!q) pari_err_PREC("fincke_pohst"); - res = smallvectors(q, bound, stockmax, CHECK); + if (q) res = smallvectors(q, bound, stockmax, CHECK); } pari_ENDCATCH; + if (!res) return gc_NULL(av); if (CHECK) { if (CHECK->f_post) res = CHECK->f_post(CHECK, res, u); return res; } - if (!res) pari_err_PREC("fincke_pohst"); z = cgetg(4,t_VEC); gel(z,1) = gcopy(gel(res,1)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/buch2.c new/pari-2.15.1/src/basemath/buch2.c --- old/pari-2.15.0/src/basemath/buch2.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/buch2.c 2022-10-31 16:34:23.000000000 +0100 @@ -1179,10 +1179,10 @@ } static GEN -vec_chinese_unit(GEN bnf) +vec_chinese_units(GEN bnf) { GEN nf = bnf_get_nf(bnf), SUnits = bnf_get_sunits(bnf); - ulong bnd = (ulong)ceil(log2Mbound(nf) + log2fubound(bnf)); + double bnd = ceil(log2Mbound(nf) + log2fubound(bnf)); GEN X, dX, Y, U, f = nf_get_index(nf); long j, l, v = nf_get_varn(nf); if (!SUnits) err_units(); /* no compact units */ @@ -1201,7 +1201,9 @@ } gel(X,j) = typ(t) == t_INT? scalarpol_shallow(t,v): t; } - return chinese_unit(nf, X, dX, U, bnd); + if (dblexpo(bnd) >= BITS_IN_LONG) + pari_err_OVERFLOW("vec_chinese_units [units too large]"); + return chinese_unit(nf, X, dX, U, (ulong)bnd); } static GEN @@ -1209,7 +1211,7 @@ { GEN nf = bnf_get_nf(bnf), fu = bnf_get_fu_nocheck(bnf); GEN tu = nf_to_scalar_or_basis(nf, bnf_get_tuU(bnf)); - fu = (typ(fu) == t_MAT)? vec_chinese_unit(bnf): matalgtobasis(nf, fu); + fu = (typ(fu) == t_MAT)? vec_chinese_units(bnf): matalgtobasis(nf, fu); return vec_prepend(fu, tu); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/factcyclo.c new/pari-2.15.1/src/basemath/factcyclo.c --- old/pari-2.15.0/src/basemath/factcyclo.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/factcyclo.c 2022-09-20 11:39:17.000000000 +0200 @@ -133,7 +133,7 @@ static ulong start_el_n(ulong n) { - ulong MAXHLONG = 1L<<(BITS_IN_LONG-1), el = (MAXHLONG/n)*n + 1; + ulong MAXHLONG = 1UL<<(BITS_IN_LONG-1), el = (MAXHLONG/n)*n + 1; if ((el&1)==0) el += n; /* if el is even, then n is odd */ return el + (n << 1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/gen1.c new/pari-2.15.1/src/basemath/gen1.c --- old/pari-2.15.0/src/basemath/gen1.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/gen1.c 2022-10-31 22:05:51.000000000 +0100 @@ -1813,6 +1813,11 @@ } return normalizeser(z); } +/* assume typ(x) = t_VEC */ +static int +is_ext_qfr(GEN x) +{ return lg(x) == 3 && typ(gel(x,1)) == t_QFB && !qfb_is_qfi(gel(x,1)) + && typ(gel(x,2)) == t_REAL; } GEN gmul(GEN x, GEN y) @@ -1882,7 +1887,9 @@ y = RgXn_mul(x, y, lx-2); return gerepilecopy(av, fill_ser(z,y)); } - case t_VEC: /* handle extended t_QFB */ + case t_VEC: + if (!is_ext_qfr(x) || !is_ext_qfr(y)) pari_err_TYPE2("*",x,y); + /* fall through, handle extended t_QFB */ case t_QFB: return qfbcomp(x,y); case t_RFRAC: return mul_rfrac(gel(x,1),gel(x,2), gel(y,1),gel(y,2)); case t_MAT: return RgM_mul(x, y); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/gen2.c new/pari-2.15.1/src/basemath/gen2.c --- old/pari-2.15.0/src/basemath/gen2.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/gen2.c 2022-10-30 17:07:08.000000000 +0100 @@ -2429,8 +2429,8 @@ else { /* if (b) x ~ (u + z) / 2 and quadnorm(x) ~ (u^2 - z^2) / 4 * else x ~ u + z and quadnorm(x) ~ u^2 - z^2 */ - long s = signe(u); - if (s == -signe(v)) /* conjugate expression avoids cancellation */ + long s = gsigne(u); + if (s == -gsigne(v)) /* conjugate expression avoids cancellation */ { z = gdiv(quadnorm(x), gsub(u, z)); if (b) shiftr_inplace(z, 1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/gen3.c new/pari-2.15.1/src/basemath/gen3.c --- old/pari-2.15.0/src/basemath/gen3.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/gen3.c 2022-10-30 17:07:08.000000000 +0100 @@ -4000,7 +4000,7 @@ return z; } -/* Compute Re(x * y), symetric result, x and y vectors of compatible +/* Compute Re(x * y), symmetric result, x and y vectors of compatible * dimensions; assume scalar entries */ GEN RgC_RgV_mulrealsym(GEN x, GEN y) @@ -4174,7 +4174,7 @@ /* EVALUATION OF SOME SIMPLE OBJECTS */ /* */ /*******************************************************************/ -/* q is a real symetric matrix, x a RgV. Horner-type evaluation of q(x) +/* q is a real symmetric matrix, x a RgV. Horner-type evaluation of q(x) * using (n^2+3n-2)/2 mul */ GEN qfeval(GEN q, GEN x) @@ -4348,7 +4348,7 @@ else { if (k != 1 && lgcols(M) == *l) return; } pari_err_DIM("qf_apply_RgM"); } -/* Return X = M'.q.M, assuming q is a symetric matrix and M is a +/* Return X = M'.q.M, assuming q is a symmetric matrix and M is a * matrix of compatible dimensions. X_ij are X_ji identical, not copies */ GEN qf_apply_RgM(GEN q, GEN M) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/grossenchar.c new/pari-2.15.1/src/basemath/grossenchar.c --- old/pari-2.15.0/src/basemath/grossenchar.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/grossenchar.c 2022-10-30 17:07:08.000000000 +0100 @@ -721,31 +721,25 @@ } /* c) transpose inverse + clean rationals. - prec = target prec for m^-1, - mprec = prec of m */ + * prec = target prec for m^-1, + * mprec = prec of m */ static void gcharmat_tinverse(GEN gc, GEN m, long prec) { GEN m_inv; - long k, n, r1, r2, ns, nc, ncm, nm, bitprec, mprec, targetmprec = 0; - bitprec = prec2nbits(prec); + long k, r1, r2, ns, nc, ncm, nm, mprec, bitprec = prec2nbits(prec); nf_get_sign(gchar_get_nf(gc), &r1, &r2); - n = r1+2*r2; ns = gchar_get_ns(gc); nc = gchar_get_nc(gc); ncm = gchar_get_nalg(gc); - nm = ns+nc+n; /* ns + nc + r1 + r2 + r2 */ - mprec = gprecision(m); - - if (lg(m)==1) - { - gchar_set_basis(gc,zeromat(0,nm)); - return; - } + nm = ns + nc + r1 + 2*r2; + if (lg(m)==1) { gchar_set_basis(gc,zeromat(0,nm)); return; } + mprec = gprecision(m); /* possibly 0, if m is exact */ while (1) { + long targetmprec = 0; GEN v0, mm; /* insert at column ns+nc+r1+r2, or last column if cm */ v0 = vec_v0(nm, ns+nc+1, r1, r2); @@ -759,6 +753,7 @@ m_inv = vecsplice(m_inv, ncm? nm: nm-r2); /* remove v0 */ if (DEBUGLEVEL>1) err_printf("v0 removed: %Ps\n", m_inv); m_inv = shallowtrans(m_inv); + if (!mprec) break; /* enough precision? */ /* |B - A^(-1)| << |B|.|Id-B*A| */ if (gexpo(m_inv) + gexpo(gsub(RgM_mul(m_inv, m), gen_1)) + expu(lg(m)) @@ -771,7 +766,7 @@ else targetmprec = 0; } mprec = maxss(precdbl(mprec), targetmprec); - if (mprec == 2) mprec = 3; + if (mprec < 3) mprec = 3; m = gcharmatnewprec_shallow(gc, mprec); /* m0 * u0 to higher prec */ } /* clean rationals */ @@ -779,7 +774,6 @@ { /* reduce mod exponent of the group, TODO reduce on each component */ GEN zmcyc = locs_get_cyc(gchar_get_zm(gc)); GEN e = ZV_lcm(zmcyc); - long k; for (k = 1; k <= nc; k++) shallow_clean_rat(gel(m_inv, ns+k), 1, nm - 1, /*zmcyc[k]*/e, prec); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/hnf_snf.c new/pari-2.15.1/src/basemath/hnf_snf.c --- old/pari-2.15.0/src/basemath/hnf_snf.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/hnf_snf.c 2022-10-06 00:56:00.000000000 +0200 @@ -2656,8 +2656,11 @@ { if (ldef) ldef--; } else { - gcoeff(A,li,def) = T; - if (B && !gequal1(d)) gel(B, def) = RgC_Rg_div(gel(B, def), d); + if (!gequal1(d)) + { + gel(A,def) = RgC_Rg_div(gel(A,def), d); + if (B) gel(B, def) = RgC_Rg_div(gel(B, def), d); + } RgM_reduce(A, B, li, def, vx); def--; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/basemath/rootpol.c new/pari-2.15.1/src/basemath/rootpol.c --- old/pari-2.15.0/src/basemath/rootpol.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/basemath/rootpol.c 2022-10-06 00:56:00.000000000 +0200 @@ -233,7 +233,7 @@ { double slope; h = i+1; - while (L[i] == -pariINFINITY) { i = h; h = i+1; vertex[h] = 1; } + while (L[i] == -pariINFINITY) { vertex[h] = 1; i = h; h = i+1; } slope = L[h] - L[i]; for (j = i+2; j<=n; j++) if (L[j] != -pariINFINITY) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/desc/PARI/822.pm new/pari-2.15.1/src/desc/PARI/822.pm --- old/pari-2.15.0/src/desc/PARI/822.pm 2021-01-25 22:49:25.000000000 +0100 +++ new/pari-2.15.1/src/desc/PARI/822.pm 2022-09-24 16:34:16.000000000 +0200 @@ -113,8 +113,9 @@ sub write { - my @order=("Function","Class","Section","C-Name","Prototype","Help", - "Iterator","Wrapper","Description","Doc"); + my @order=("Function","Class","Section","C-Name","Prototype", + "Obsolete","Help", "Iterator","Wrapper","Description", + "Doc","Variant"); my %knowfields=map {$_ => 1} @order; my %data=%{shift()}; my $STREAM=shift; @@ -130,7 +131,8 @@ } foreach my $field (sort keys %{$data{$func}}) { - next if ($knowfields{$field}); + next if ($knowfields{$field}); + warn("Unknown field $field in $func"); my $val=$data{$func}->{$field}; $val =~ s/\n/\n /g; print $STREAM $field.": $val\n"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/funclist new/pari-2.15.1/src/funclist --- old/pari-2.15.0/src/funclist 2022-09-16 19:16:50.000000000 +0200 +++ new/pari-2.15.1/src/funclist 2022-10-06 01:54:01.000000000 +0200 @@ -20,7 +20,7 @@ 4045346554 802 ../functions/algebras/alghassef 734197559 543 ../functions/algebras/alghassei 1201195749 930 ../functions/algebras/algindex -510412744 6461 ../functions/algebras/alginit +871207782 6463 ../functions/algebras/alginit 4130883813 385 ../functions/algebras/alginv 1891827910 499 ../functions/algebras/alginvbasis 465212633 851 ../functions/algebras/algisassociative @@ -325,7 +325,7 @@ 3696833048 259 ../functions/graphic/plotcursor 2247238862 906 ../functions/graphic/plotdraw 2746491949 747 ../functions/graphic/plotexport -334393966 5547 ../functions/graphic/ploth +298035589 5548 ../functions/graphic/ploth 2358400967 1157 ../functions/graphic/plothexport 2675384433 697 ../functions/graphic/plothraw 4013210701 977 ../functions/graphic/plothrawexport @@ -967,7 +967,7 @@ 1916612909 703 ../functions/number_theoretical/znprimroot 3287313646 1479 ../functions/number_theoretical/znstar 320626282 3232 ../functions/number_theoretical/znsubgroupgenerators -1077827174 14123 ../functions/operators/HEADER +1314839946 14124 ../functions/operators/HEADER 864331270 1381 ../functions/operators/cmp 3774435241 1121 ../functions/operators/divrem 2646697643 1060 ../functions/operators/lex diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/functions/algebras/alginit new/pari-2.15.1/src/functions/algebras/alginit --- old/pari-2.15.0/src/functions/algebras/alginit 2022-05-19 15:18:47.000000000 +0200 +++ new/pari-2.15.1/src/functions/algebras/alginit 2022-10-06 01:53:45.000000000 +0200 @@ -24,11 +24,11 @@ 0, 0, 0,1; 1, 0, 0,0; 0,-1, 0,0]; - mk = [0, 0, 0, 0; + mk = [0, 0, 0, -1; 0, 0,-1, 0; 0, 1, 0, 0; - 1, 0, 0,-1]; - A = alginit(nfinit(y), [matid(4), mi,mj,mk], 0); } + 1, 0, 0, 0]; + A = alginit(nfinit(y), [matid(4), mi,mj,mk], , 0); } @eprog represents (in a complicated way) the quaternion algebra $(-1,-1)_\Q$. See below for a simpler solution. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/functions/graphic/ploth new/pari-2.15.1/src/functions/graphic/ploth --- old/pari-2.15.0/src/functions/graphic/ploth 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/functions/graphic/ploth 2022-09-24 14:30:28.000000000 +0200 @@ -115,6 +115,6 @@ @eprog\noindent will draw respectively a circle and a circle cut by the line $y=x$. -\item $8192 = \kbd{no_MinMax}$: do not print the boundary numbers (in both directions). + \item $8192 = \kbd{no_MinMax}$: do not print the boundary numbers (in both directions). \synt{ploth}{void *E, GEN (*eval)(void*, GEN), GEN a, GEN b, long flag, long n, long prec}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/functions/operators/HEADER new/pari-2.15.1/src/functions/operators/HEADER --- old/pari-2.15.0/src/functions/operators/HEADER 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/functions/operators/HEADER 2022-10-06 00:56:00.000000000 +0200 @@ -51,7 +51,7 @@ %3 = 0 ? Pol(0,'x) == Pol(0,'y) \\ equal (constant: ignore variable) %4 = 1 - ? Pol(0,'x) == Pol(0,'y) \\ not identical + ? Pol(0,'x) === Pol(0,'y) \\ not identical %5 = 0 ? 0 == Pol(0) \\ equal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/headers/paridecl.h new/pari-2.15.1/src/headers/paridecl.h --- old/pari-2.15.0/src/headers/paridecl.h 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/headers/paridecl.h 2022-10-30 17:07:08.000000000 +0100 @@ -2145,6 +2145,7 @@ const struct bb_field *get_Fp_field(void **E, GEN p); long hilbert(GEN x, GEN y, GEN p); long hilbertii(GEN x, GEN y, GEN p); +long istotient(GEN n, GEN *px); long krois(GEN x, long y); long kroiu(GEN x, ulong y); long kronecker(GEN x, GEN y); @@ -2200,11 +2201,14 @@ long Z_issquarefree_fact(GEN F); GEN Z_lsmoothen(GEN N, GEN L, GEN *pP, GEN *pe); GEN Z_smoothen(GEN N, GEN L, GEN *pP, GEN *pe); +long bigomega(GEN n); +long bigomegau(ulong n); GEN boundfact(GEN n, ulong lim); GEN check_arith_pos(GEN n, const char *f); GEN check_arith_non0(GEN n, const char *f); GEN check_arith_all(GEN n, const char *f); GEN clean_Z_factor(GEN f); +GEN core(GEN n); GEN coredisc2_fact(GEN fa, long s, GEN *pP, GEN *pE); ulong coredisc2u_fact(GEN fa, long s, GEN *pP, GEN *pE); GEN corepartial(GEN n, long l); @@ -2222,6 +2226,9 @@ GEN divisorsu_moebius(GEN P); GEN divisorsu_fact(GEN fa); GEN divisorsu_fact_factored(GEN fa); +GEN eulerphi(GEN n); +ulong eulerphiu(ulong n); +ulong eulerphiu_fact(GEN f); GEN factor_pn_1(GEN p, ulong n); GEN factor_pn_1_limit(GEN p, long n, ulong lim); GEN factoru_pow(ulong n); @@ -2231,6 +2238,16 @@ int is_Z_factorpos(GEN f); int is_nf_factor(GEN F); int is_nf_extfactor(GEN F); +long issquarefree(GEN x); +GEN numdiv(GEN n); +long numdivu(long N); +long numdivu_fact(GEN fa); +long omega(GEN n); +long omegau(ulong n); +GEN sumdiv(GEN n); +GEN sumdivk(GEN n,long k); +long uissquarefree(ulong n); +long uissquarefree_fact(GEN f); GEN usumdiv_fact(GEN f); GEN usumdivk_fact(GEN f, ulong k); @@ -4174,14 +4191,8 @@ GEN absZ_factor(GEN n); GEN absZ_factor_limit(GEN n, ulong all); GEN absZ_factor_limit_strict(GEN n, ulong all, GEN *pU); -long bigomega(GEN n); -long bigomegau(ulong n); -GEN core(GEN n); ulong coreu(ulong n); ulong coreu_fact(GEN f); -GEN eulerphi(GEN n); -ulong eulerphiu(ulong n); -ulong eulerphiu_fact(GEN f); GEN factorint(GEN n, long flag); GEN factoru(ulong n); ulong tridiv_boundu(ulong n); @@ -4193,28 +4204,17 @@ int is_357_power(GEN x, GEN *pt, ulong *mask); int is_pth_power(GEN x, GEN *pt, forprime_t *T, ulong cutoffbits); long ispowerful(GEN n); -long issquarefree(GEN x); -long istotient(GEN n, GEN *px); long maxomegau(ulong x); long maxomegaoddu(ulong x); long moebius(GEN n); long moebiusu(ulong n); long moebiusu_fact(GEN f); GEN nextprime(GEN n); -GEN numdiv(GEN n); -long numdivu(long N); -long numdivu_fact(GEN fa); -long omega(GEN n); -long omegau(ulong n); GEN precprime(GEN n); ulong radicalu(ulong n); -GEN sumdiv(GEN n); -GEN sumdivk(GEN n,long k); ulong tridiv_bound(GEN n); int uis_357_power(ulong x, ulong *pt, ulong *mask); int uis_357_powermod(ulong x, ulong *mask); -long uissquarefree(ulong n); -long uissquarefree_fact(GEN f); ulong unextprime(ulong n); ulong uprecprime(ulong n); GEN vecfactorsquarefreeu(ulong a, ulong b); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/language/sumiter.c new/pari-2.15.1/src/language/sumiter.c --- old/pari-2.15.0/src/language/sumiter.c 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/language/sumiter.c 2022-11-01 09:37:35.000000000 +0100 @@ -1430,14 +1430,24 @@ fc = fb; e = d = NULL; for (iter = 1; iter <= itmax; ++iter) { /* b = current best guess, a and c auxiliary points */ - long bit2; + long bit2, exb; GEN m; if (gsigne(fb)*gsigne(fc) > 0) { c = a; fc = fa; e = d = subrr(b, a); } if (gcmp(gabs(fc, 0), gabs(fb, 0)) < 0) { a = b; b = c; c = a; fa = fb; fb = fc; fc = fa; } - bit2 = bit-1 + maxss(bit, expo(b)); m = subrr(c, b); shiftr_inplace(m, -1); - if (expo(m) <= expo(b)+bit0 || gequal0(fb)) break; /*SUCCESS*/ + exb = expo(b); + if (bit < exb) + { + bit2 = bit + exb - 1; + if (expo(m) <= exb + bit0) break; /*SUCCESS*/ + } + else + { /* b ~ 0 */ + bit2 = 2*bit - 1; + if (expo(m) <= bit2) break; /*SUCCESS*/ + } + if (gequal0(fb)) break; /*SUCCESS*/ if (expo(e) > bit2 && gexpo(fa) > gexpo(fb)) { /* interpolation, m != 0, |f(c)| >= |f(b)|, f(b)f(c) < 0 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/lindep new/pari-2.15.1/src/test/32/lindep --- old/pari-2.15.0/src/test/32/lindep 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/32/lindep 2022-10-06 00:56:00.000000000 +0200 @@ -6,6 +6,7 @@ 0 (y - 1)*x + 1 x + (-5*y - 1) +y*x + y^2 (27*T - 4)*x^3 + 3*x + 1 [(27*T^2 - 4*T)*x^2 + (54*T - 2)*x + 6, 0] [x - 2*T, -2*T^3 + 2*T] @@ -36,4 +37,4 @@ Mod(-2*x + 1, 4*x^2 - 2) Mod(3*x + 1, x^3 - 2) "t_FRAC" -Total time spent: 4 +Total time spent: 2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/mathnf new/pari-2.15.1/src/test/32/mathnf --- old/pari-2.15.0/src/test/32/mathnf 2022-05-19 15:18:47.000000000 +0200 +++ new/pari-2.15.1/src/test/32/mathnf 2022-10-06 00:56:00.000000000 +0200 @@ -24,7 +24,7 @@ [Mod(1, 5)*x^5 + Mod(2, 5)*x^3 + Mod(4, 5)*x + Mod(1, 5) Mod(4, 5)*x^4 + Mod (2, 5)*x^3 + Mod(4, 5)*x^2 + Mod(3, 5)*x] -[0 1] +[Mod(0, 5) 1] ? v=[116085838,181081878,314252913,10346840]; ? [H,U]=mathnf(v,1);[v*U,norml2(U)] @@ -55,6 +55,12 @@ [0 0 0 0 0 0 0 0 0 1] +? M=[16*x^9-224*x^8+1176*x^7-2744*x^6+2401*x^5,0,0,0,0,0,16*x^9-224*x^8+1176*x^7-2744*x^6+2401*x^5,0,0,0,0,0,16*x^9-224*x^8+1176*x^7-2744*x^6+2401*x^5,0,0,0,0,0;0,-32*x^9+560*x^8-3920*x^7+13720*x^6-24010*x^5+16807*x^4,0,0,0,0,0,-32*x^10+560*x^9-3920*x^8+13720*x^7-24010*x^6+16807*x^5,0,0,0,422576*x^9-5916064*x^8+31059336*x^7-72471784*x^6+63412811*x^5,0,-32*x^10+560*x^9-3920*x^8+13720*x^7-24010*x^6+16807*x^5,0,0,0,0;0,0,64*x^9-1344*x^8+11760*x^7-54880*x^6+144060*x^5-201684*x^4+117649*x^3,0,0,0,0,0,32*x^10-560*x^9+3920*x^8-13720*x^7+24010*x^6-16807*x^5,0,0,0,0,0,64*x^11-1344*x^10+11760*x^9-54880*x^8+144060*x^7-201684*x^6+117649*x^5,0,0,0;0,0,0,-128*x^9+3136*x^8-32928*x^7+192080*x^6-672280*x^5+1411788*x^4-1647086*x^3+823543*x^2,0,0,0,0,0,-32*x^10+560*x^9-3920*x^8+13720*x^7-24010*x^6+16807*x^5,0,0,0,0,0,-128*x^12+3136*x^11-32928*x^10+192080*x^9-672280*x^8+1411788*x^7-1647086*x^6+823543*x^5,0,0;0,0,0,0,256*x^9-7168*x^8+87808*x^7-614656*x^6+2689120*x^5-7529536*x^4+13176688*x^3-13176688*x^2 +5764801*x,0,0,0,0,0,32*x^10-560*x^9+3920*x^8-13720*x^7+24010*x^6-16807*x^5,0,0,0,0,0,256*x^13-7168*x^12+87808*x^11-614656*x^10+2689120*x^9-7529536*x^8+13176688*x^7-13176688*x^6+5764801*x^5,0;0,0,0,0,0,-512*x^9+16128*x^8-225792*x^7+1843968*x^6-9680832*x^5+33882912*x^4-79060128*x^3+118590192*x^2-103766418*x+40353607,0,0,0,0,0,-512*x^10+8960*x^9-62720*x^8+219520*x^7-384160*x^6+268912*x^5,0,0,0,0,0,-512*x^14+16128*x^13-225792*x^12+1843968*x^11-9680832*x^10+33882912*x^9-79060128*x^8+118590192*x^7-103766418*x^6+40353607*x^5]; +? [H,U]=mathnf(M,1); +? M*U[,1..12]==0 +1 +? M*U[,13..18]==H +1 ? mathnf([]) [;] ? mathnf([],1) @@ -102,4 +108,4 @@ *** ^------------------------------ *** matsolvemod: inconsistent dimensions in matsolvemod [2]. ? print("Total time spent: ",gettime); -Total time spent: 1 +Total time spent: 2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/pol new/pari-2.15.1/src/test/32/pol --- old/pari-2.15.0/src/test/32/pol 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/32/pol 2022-10-06 00:56:00.000000000 +0200 @@ -113,6 +113,9 @@ -0.50000000000000000000000000000000000000 - 6.30476010645924576561431291726 65561499*I, -0.50000000000000000000000000000000000000 + 6.304760106459245765 6143129172665561499*I]~ +[-2.8894111933973646917594759197737980990 + 0.E-38*I, 0.94470559669868234587 +973795988689904951 - 3.4010023796961396823552931254901620587*I, 0.9447055966 +9868234587973795988689904951 + 3.4010023796961396823552931254901620587*I]~ 0 *** at top-level: polrootsbound(Pol(0)) *** ^--------------------- @@ -129,4 +132,4 @@ *** at top-level: poltomonic(Pol(0)) *** ^------------------ *** poltomonic: zero polynomial in poltomonic. -Total time spent: 9 +Total time spent: 7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/polred new/pari-2.15.1/src/test/32/polred --- old/pari-2.15.0/src/test/32/polred 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/32/polred 2022-09-24 17:32:27.000000000 +0200 @@ -86,7 +86,8 @@ y^2 + Mod(t^3, t^4 + t^3 + t^2 + t + 1)*y + Mod(8*t^2 - 46*t + 8, t^4 + t^3 + t^2 + t + 1) [x^6 - 2*x^3 + 2, Mod(-1/2*x^4 + x, x^6 - 2*x^3 + 2)] +[y^4 - 2*y^2 - 2*y + 1, Mod(-1/2*y^3 + 1/2*y + 1, y^4 - 2*y^2 - 2*y + 1)] *** at top-level: polredbest(x^6+30*x^5+133*x^4-2340*x^3-12284*x *** ^---------------------------------------------- *** polredbest: not an irreducible polynomial in set_LLL_basis: x^6 + 30*x^5 + 133*x^4 - 2340*x^3 - 12284*x^2 + 29519*x - 3856. -Total time spent: 4994 +Total time spent: 4437 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/qfb new/pari-2.15.1/src/test/32/qfb --- old/pari-2.15.0/src/test/32/qfb 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/32/qfb 2022-10-31 22:05:51.000000000 +0100 @@ -37,6 +37,24 @@ *** at top-level: qfbredsl2(q,1.) *** ^--------------- *** qfbredsl2: incorrect type in qfbredsl2 (t_REAL). + *** at top-level: [1,2]*[1,2,4] + *** ^-------- + *** _*_: forbidden multiplication t_VEC (2 elts) * t_VEC (3 elts). + *** at top-level: R*[1,2] + *** ^------ + *** _*_: forbidden multiplication t_VEC (2 elts) * t_VEC (2 elts). + *** at top-level: [1,2]*R + *** ^-- + *** _*_: forbidden multiplication t_VEC (2 elts) * t_VEC (2 elts). + *** at top-level: [i,0.]*[1,2] + *** ^------ + *** _*_: forbidden multiplication t_VEC (2 elts) * t_VEC (2 elts). + *** at top-level: [1,2]*[i,0.] + *** ^------- + *** _*_: forbidden multiplication t_VEC (2 elts) * t_VEC (2 elts). + *** at top-level: [i,0.]*[i,0.] + *** ^------- + *** _*_: forbidden multiplication t_VEC (2 elts) * t_VEC (2 elts). *** at top-level: f*g *** ^-- *** _*_: inconsistent multiplication t_QFB * t_QFB. @@ -64,4 +82,4 @@ *** at top-level: ...18,-18);g=Qfb(11,52,-41);qfbcomp([f,1.],g) *** ^----------------- *** qfbcomp: sorry, Shanks's distance in general composition is not yet implemented. -Total time spent: 0 +Total time spent: 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/quad new/pari-2.15.1/src/test/32/quad --- old/pari-2.15.0/src/test/32/quad 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/32/quad 2022-10-06 00:56:00.000000000 +0200 @@ -43,6 +43,7 @@ -4294967297 4294967297 -4294967297 +2.2847006554165615148712535010323047844 *** at top-level: floor(w8) *** ^--------- *** floor: incorrect type in gfloor (t_QUAD). @@ -55,4 +56,4 @@ *** at top-level: floor(Mod(0,3)*quadgen(5)) *** ^-------------------------- *** floor: incorrect type in gfloor (t_QUAD). -Total time spent: 2 +Total time spent: 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/solve new/pari-2.15.1/src/test/32/solve --- old/pari-2.15.0/src/test/32/solve 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/32/solve 2022-11-01 09:37:35.000000000 +0100 @@ -20,6 +20,7 @@ -128 -128 -128 +-373 *** at top-level: solvestep(x=1,100,-1,hardy(x)) *** ^--------- *** domain error in solvestep: step <= 0 @@ -32,4 +33,4 @@ *** at top-level: solve(x=2,oo,exp(x)-2) *** ^--------- *** exp: overflow in expo(). -Total time spent: 271 +Total time spent: 154 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/32/version new/pari-2.15.1/src/test/32/version --- old/pari-2.15.0/src/test/32/version 2022-09-19 15:05:13.000000000 +0200 +++ new/pari-2.15.1/src/test/32/version 2022-11-02 10:52:16.000000000 +0100 @@ -1,2 +1,2 @@ -[2, 15, 0] +[2, 15, 1] Total time spent: 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/lindep new/pari-2.15.1/src/test/in/lindep --- old/pari-2.15.0/src/test/in/lindep 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/in/lindep 2022-10-06 00:56:00.000000000 +0200 @@ -7,6 +7,7 @@ seralgdep(z, 2,2) seralgdep(1/(1-y+O(y^5)), 1,1) seralgdep(1+5*y+O(y^3), 1,10) +seralgdep(Ser([0,1,0,u]*Mod(1,(u^2+u+1)*Mod(1,2)),y),2,2) S=sum(i=0,50,binomial(3*i,i)*T^i)+O(T^51); seralgdep(S, 3, 3) serdiffdep(S, 3, 3) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/mathnf new/pari-2.15.1/src/test/in/mathnf --- old/pari-2.15.0/src/test/in/mathnf 2022-05-19 15:18:47.000000000 +0200 +++ new/pari-2.15.1/src/test/in/mathnf 2022-10-06 00:56:00.000000000 +0200 @@ -11,6 +11,11 @@ [H,U]=mathnf(v, 5); [v*U, norml2(U)] M=[0,0,0,0,0,0,0,0,0,13;0,0,0,0,0,0,0,0,23,6;0,0,0,0,0,0,0,23,-4,-7;0,0,0,0,0,0,17,-3,5,-5;0,0,0,0,0,56,16,-16,-15,-17;0,0,0,0,57,24,-16,-25,2,-21;0,0,0,114,9,56,51,-52,25,-55;0,0,113,-31,-11,24,0,28,34,-16;0,50,3,2,16,-6,-2,7,-19,-21;118,43,51,23,37,-52,18,38,51,28]; mathnf(M) +M=[16*x^9-224*x^8+1176*x^7-2744*x^6+2401*x^5,0,0,0,0,0,16*x^9-224*x^8+1176*x^7-2744*x^6+2401*x^5,0,0,0,0,0,16*x^9-224*x^8+1176*x^7-2744*x^6+2401*x^5,0,0,0,0,0;0,-32*x^9+560*x^8-3920*x^7+13720*x^6-24010*x^5+16807*x^4,0,0,0,0,0,-32*x^10+560*x^9-3920*x^8+13720*x^7-24010*x^6+16807*x^5,0,0,0,422576*x^9-5916064*x^8+31059336*x^7-72471784*x^6+63412811*x^5,0,-32*x^10+560*x^9-3920*x^8+13720*x^7-24010*x^6+16807*x^5,0,0,0,0;0,0,64*x^9-1344*x^8+11760*x^7-54880*x^6+144060*x^5-201684*x^4+117649*x^3,0,0,0,0,0,32*x^10-560*x^9+3920*x^8-13720*x^7+24010*x^6-16807*x^5,0,0,0,0,0,64*x^11-1344*x^10+11760*x^9-54880*x^8+144060*x^7-201684*x^6+117649*x^5,0,0,0;0,0,0,-128*x^9+3136*x^8-32928*x^7+192080*x^6-672280*x^5+1411788*x^4-1647086*x^3+823543*x^2,0,0,0,0,0,-32*x^10+560*x^9-3920*x^8+13720*x^7-24010*x^6+16807*x^5,0,0,0,0,0,-128*x^12+3136*x^11-32928*x^10+192080*x^9-672280*x^8+1411788*x^7-1647086*x^6+823543*x^5,0,0;0,0,0,0,256*x^9-7168*x^8+87808*x^7-614656*x^6+2689120*x^5-7529536*x^4+13176688*x^3-13176688*x^2+5 764801*x,0,0,0,0,0,32*x^10-560*x^9+3920*x^8-13720*x^7+24010*x^6-16807*x^5,0,0,0,0,0,256*x^13-7168*x^12+87808*x^11-614656*x^10+2689120*x^9-7529536*x^8+13176688*x^7-13176688*x^6+5764801*x^5,0;0,0,0,0,0,-512*x^9+16128*x^8-225792*x^7+1843968*x^6-9680832*x^5+33882912*x^4-79060128*x^3+118590192*x^2-103766418*x+40353607,0,0,0,0,0,-512*x^10+8960*x^9-62720*x^8+219520*x^7-384160*x^6+268912*x^5,0,0,0,0,0,-512*x^14+16128*x^13-225792*x^12+1843968*x^11-9680832*x^10+33882912*x^9-79060128*x^8+118590192*x^7-103766418*x^6+40353607*x^5]; +[H,U]=mathnf(M,1); +M*U[,1..12]==0 +M*U[,13..18]==H + mathnf([]) mathnf([],1) mathnf([;]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/pol new/pari-2.15.1/src/test/in/pol --- old/pari-2.15.0/src/test/in/pol 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/in/pol 2022-10-06 00:56:00.000000000 +0200 @@ -100,6 +100,8 @@ \\#2286 polroots(1.E-47*t^6 + 1.E-47*t^5 + 4.E-46*t^4) +\\#2418 +polroots(4*x^3+4*x^2+28*x+144) polzagier(-1,1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/polred new/pari-2.15.1/src/test/in/polred --- old/pari-2.15.0/src/test/in/polred 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/in/polred 2022-09-24 17:32:27.000000000 +0200 @@ -78,7 +78,11 @@ K=nfinit(polcyclo(5,t)); rnfpolredabs(K, y^2+(t^3+3*t^2+3*t+1)*y+(-53*t^3-10*t-10), 1)[1] -polredbest(4*x^6+1,1) \\ #2301 +\\ #2301 +polredbest(4*x^6+1,1) + +\\ #2414 +polredbest(y^4 - y^3 - 1/4,1) \\ ERRORS, keep at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/qfb new/pari-2.15.1/src/test/in/qfb --- old/pari-2.15.0/src/test/in/qfb 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/in/qfb 2022-10-31 22:05:51.000000000 +0100 @@ -48,6 +48,14 @@ \\ Errors, keep at end of file qfbredsl2(q,1.); +r=Qfb(5,7,1); i=Qfb(5,1,1); R=[r,0.]; +[1,2]*[1,2,4] +R*[1,2] +[1,2]*R +[i,0.]*[1,2] +[1,2]*[i,0.] +[i,0.]*[i,0.] + f=Qfb(12,5,3);g=Qfb(5,5,2); f*g f/g diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/quad new/pari-2.15.1/src/test/in/quad --- old/pari-2.15.0/src/test/in/quad 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/in/quad 2022-10-06 00:56:00.000000000 +0200 @@ -47,6 +47,7 @@ ceil(-2*w) round(2*w) round(-2*w) +quadgen(5) + 2/3 + 0.\\ #2419 \\ Errors keep at end of file floor(w8) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.0/src/test/in/solve new/pari-2.15.1/src/test/in/solve --- old/pari-2.15.0/src/test/in/solve 2022-09-16 19:16:27.000000000 +0200 +++ new/pari-2.15.1/src/test/in/solve 2022-11-01 09:37:35.000000000 +0100 @@ -7,6 +7,7 @@ exponent(solve(x=-oo,oo,exp(x)-2)-log(2)) exponent(solve(x=-oo,2,exp(x)-2)-log(2)) exponent(solve(x=0,oo,exp(x)-2)-log(2)) +exponent(solve(x=-0.001,Pi/2-0.01,sin(x)+cos(x)-1)) \\ #2412 \\ Errors, keep at end solvestep(x=1,100,-1,hardy(x))