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

Reply via email to