Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pari for openSUSE:Factory checked in at 2023-01-05 15:01:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pari (Old) and /work/SRC/openSUSE:Factory/.pari.new.1563 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pari" Thu Jan 5 15:01:42 2023 rev:30 rq:1056174 version:2.15.2 Changes: -------- --- /work/SRC/openSUSE:Factory/pari/pari.changes 2022-11-19 18:09:25.806475547 +0100 +++ /work/SRC/openSUSE:Factory/.pari.new.1563/pari.changes 2023-01-05 15:01:58.941430377 +0100 @@ -1,0 +2,12 @@ +Thu Jan 5 08:17:22 UTC 2023 - Dirk Müller <[email protected]> + +- update to 2.15.2: + Fixed + polredbest: rare error "inconsistent concatenation" + hypergeom([0,0],[1],2) + powers(t_INT, ...) was very slow + factor(prod(i=1,20,nextprime(2^i)), 131) would include 131 + sumeulerrat(x^2/(1+x),2) -> FPE + lambertw(10^1000) -> overflow + +------------------------------------------------------------------- Old: ---- pari-2.15.1.tar.gz pari-2.15.1.tar.gz.asc New: ---- pari-2.15.2.tar.gz pari-2.15.2.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pari.spec ++++++ --- /var/tmp/diff_new_pack.Mbh2Dq/_old 2023-01-05 15:01:59.513434463 +0100 +++ /var/tmp/diff_new_pack.Mbh2Dq/_new 2023-01-05 15:01:59.513434463 +0100 @@ -1,7 +1,7 @@ # # spec file for package pari # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -28,7 +28,7 @@ %global sover 8 %global lname libpari-gmp-tls%sover Name: pari -Version: 2.15.1 +Version: 2.15.2 Release: 0 Summary: Computer Algebra System for computations in Number Theory License: GPL-2.0-only ++++++ pari-2.15.1.tar.gz -> pari-2.15.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/CHANGES new/pari-2.15.2/CHANGES --- old/pari-2.15.1/CHANGES 2022-11-02 11:36:26.000000000 +0100 +++ new/pari-2.15.2/CHANGES 2022-12-23 19:36:15.000000000 +0100 @@ -1,5 +1,14 @@ Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/ +Done for version 2.15.2 (released 24/12/2022): + Fixed + 1- polredbest: rare error "inconsistent concatenation" [#2423] [F12] + 2- hypergeom([0,0],[1],2) -> SEGV [#2425] [F13] + 3- powers(t_INT, ...) was very slow [F15] + 4- factor(prod(i=1,20,nextprime(2^i)), 131) would include 131 [F16] + 5- sumeulerrat(x^2/(1+x),2) -> FPE [#2433] [F17] + 6- lambertw(10^1000) -> overflow [#2429] [F18] + Done for version 2.15.1 (released 02/11/2022): Fixed BA 1- ploth long help was misformatted [F1] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/config/get_cc new/pari-2.15.2/config/get_cc --- old/pari-2.15.1/config/get_cc 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/config/get_cc 2022-12-23 17:02:05.000000000 +0100 @@ -110,13 +110,6 @@ # Specific optimisations for some architectures case "$arch" in sparcv8*) cflags=-mv8;; - i?86) - cmd="$CC $CFLAGS $extraflag -mpc64 -fno-strict-aliasing -o $exe gnu.c" - . log_cmd - if test -s $exe; then - cflags="-mpc64" - fi - . cleanup_exe;; esac # problems on some architectures case "$osname" in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/config/version new/pari-2.15.2/config/version --- old/pari-2.15.1/config/version 2022-11-02 11:36:43.000000000 +0100 +++ new/pari-2.15.2/config/version 2022-12-24 11:21:07.000000000 +0100 @@ -5,7 +5,7 @@ VersionMinor='15' # Patch level -patch='1' +patch='2' # Version code version_code=`expr $VersionMajor \\* 65536 + $VersionMinor \\* 256 + $patch` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/doc/refmacro.tex new/pari-2.15.2/doc/refmacro.tex --- old/pari-2.15.1/doc/refmacro.tex 2022-11-02 10:54:54.000000000 +0100 +++ new/pari-2.15.2/doc/refmacro.tex 2022-11-05 14:54:18.000000000 +0100 @@ -8,9 +8,9 @@ % file. \def\versionnumber{2.38}% Version of these reference cards -\def\PARIversion{2.15.1}% Version of PARI described on these reference cards +\def\PARIversion{2.15.2}% Version of PARI described on these reference cards \def\year{2022} -\def\month{August} +\def\month{November} \special{papersize=29.7cm,21cm} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/doc/usersch2.tex new/pari-2.15.2/doc/usersch2.tex --- old/pari-2.15.1/doc/usersch2.tex 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/doc/usersch2.tex 2022-12-05 20:59:52.000000000 +0100 @@ -808,10 +808,20 @@ that $(p, p+2)$ is a twin pair; \bprog ? [ p^2 | p <- primes(10), p % 4 == 1 ] - %1 = [25, 169, 289, 841] + %3 = [25, 169, 289, 841] @eprog\noindent returns the squares of the primes congruent to $1$ modulo $4$, where $p$ runs among the first 10 primes. + To iterate over more than one variable, you may separate clauses with + \kbd{;} as in + \bprog + ? [ x+y | x <- [1..3]; y <- [1..2] ] + %4 = [2, 3, 3, 4, 4, 5] + + ? [ [x,y] | x <- [1..4], isprime(x); y <- [2..5], y % 3 == 1 ] + %5 = [[2, 4], [3, 4]] + @eprog + \subsec{Matrices (\typ{MAT})}% \sidx{matrix}\kbdsidx{t_MAT} To enter a matrix, type the components row by row, the components being diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/doc/usersch3.tex new/pari-2.15.2/doc/usersch3.tex --- old/pari-2.15.1/doc/usersch3.tex 2022-10-06 01:54:01.000000000 +0200 +++ new/pari-2.15.2/doc/usersch3.tex 2022-12-24 11:20:38.000000000 +0100 @@ -7999,17 +7999,19 @@ \item $D$ omitted: factor over the field of definition of $f$, which must be a finite field. -This is somewhat faster than full factorization. The coefficients of $f$ -must be operation-compatible with the corresponding finite field. The result -is a two-column matrix: - -\item the first column contains monic (squarefree) pairwise coprime polynomials -dividing $f$, all of whose irreducible factors have degree $d$; +If $f$ is not squarefree, the result is undefined. +The coefficients of $f$ must be operation-compatible with the corresponding +finite field. The result is a two-column matrix: + +\item the first column contains monic (squarefree, pairwise coprime) +polynomials dividing $f$, all of whose irreducible factors have +the same degree $d$; \item the second column contains the degrees of the irreducible factors. -The factors are ordered by increasing degree and the result is canonical: it -will not change across multiple calls or sessions. +The factorization is ordered by increasing degree $d$ of irreducible factors, +and the result is obviously canonical. +This function is somewhat faster than full factorization. \bprog ? f = (x^2 + 1) * (x^2-1); @@ -8025,7 +8027,7 @@ ? for(i=1,10^5,factormodDDF(f,3)) time = 424 ms. -? for(i=1,10^5,factormod(f,3)) \\ full factorization is slower +? for(i=1,10^5,factormod(f,3)) \\ full factorization is a little slower time = 464 ms. ? liftall( factormodDDF(x^2 + 1, [3, t^2+1]) ) \\ over F_9 @@ -8058,9 +8060,8 @@ \item $D$ omitted: factor over the field of definition of $f$, which must be a finite field. -This is somewhat faster than full factorization. The coefficients of $f$ -must be operation-compatible with the corresponding finite field. The result -is a two-column matrix: +The coefficients of $f$ must be operation-compatible with the corresponding +finite field. The result is a two-column matrix: \item the first column contains monic squarefree pairwise coprime polynomials dividing $f$; @@ -8068,8 +8069,8 @@ \item the second column contains the power to which the polynomial in column $1$ divides $f$; -The factors are ordered by increasing degree and the result is canonical: it -will not change across multiple calls or sessions. +This is somewhat faster than full factorization. The factors are ordered by +increasing exponent and the result is obviously canonical. \bprog ? f = (x^2 + 1)^3 * (x^2-1)^2; @@ -23727,9 +23728,9 @@ embedding of $\Q[x]/(P)$ in its splitting field given by a polynomial (implicitly modulo $S$, as in \kbd{nfisincl}). -\item $\fl = 2$: return $[S,C]$ where $C$ is a rational function whose image -in $\Q[x]/(S)$ yields an embedding; this avoids inverting the denominator, -which is costly. when the degree of the splitting field is huge. +\item $\fl = 2$: return $[S,C]$ where $C$ is vector of rationals functions + whose image in $\Q[x]/(S)$ yields the embedding; this avoids inverting the + denominator, which is costly. when the degree of the splitting field is huge. \item $\fl = 3$: return $[S, v, p]$ a data structure allowing to quickly compute the Galois group of the splitting field, which is used by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/FpE.c new/pari-2.15.2/src/basemath/FpE.c --- old/pari-2.15.1/src/basemath/FpE.c 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/basemath/FpE.c 2022-12-21 18:55:15.000000000 +0100 @@ -155,9 +155,9 @@ pari_sp av = avma; struct _FpE *e=(struct _FpE *) E; long s = signe(n); - if (!s || ell_is_inf(P)) return ellinf(); + if (!s || signe(gel(P,3))==0) return mkvec3(gen_1, gen_1, gen_0); if (s<0) P = FpJ_neg(P, e->p); - if (is_pm1(n)) return s>0? gcopy(P): P; + if (is_pm1(n)) return s > 0 ? gcopy(P): P; return gerepilecopy(av, gen_pow_i(P, n, e, &_FpJ_dbl, &_FpJ_add)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/base2.c new/pari-2.15.2/src/basemath/base2.c --- old/pari-2.15.1/src/basemath/base2.c 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/basemath/base2.c 2022-11-08 14:27:13.000000000 +0100 @@ -392,7 +392,7 @@ if (DEBUGLEVEL) pari_warn(warner,"large composite in nfmaxord:loop(), %Ps", p); if (expi(p) < 100) - u = Z_factor(p); /* factor(n < 2^100) should take ~20ms */ + u = gel(Z_factor(p), 1); /* p < 2^100 should take ~20ms */ else if (S->certify) u = Z_fac(p); else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/gen1.c new/pari-2.15.2/src/basemath/gen1.c --- old/pari-2.15.1/src/basemath/gen1.c 2022-10-31 22:05:51.000000000 +0100 +++ new/pari-2.15.2/src/basemath/gen1.c 2022-12-21 18:55:47.000000000 +0100 @@ -2228,7 +2228,8 @@ gel(z,2) = gsqr(gel(x,2)); return z; case t_MAT: return RgM_sqr(x); - case t_VEC: /* handle extended t_QFB */ + case t_VEC: if (!is_ext_qfr(x)) pari_err_TYPE2("*",x,x); + /* fall through handle extended t_QFB */ case t_QFB: return qfbsqr(x); case t_VECSMALL: z = cgetg_copy(x, &lx); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/hypergeom.c new/pari-2.15.2/src/basemath/hypergeom.c --- old/pari-2.15.1/src/basemath/hypergeom.c 2022-10-30 17:07:08.000000000 +0100 +++ new/pari-2.15.2/src/basemath/hypergeom.c 2022-11-16 10:32:38.000000000 +0100 @@ -568,8 +568,8 @@ pari_sp av; GEN C, S; long j, ct, pradd, mi, bitmin, mb; - if (isnegint2(b, &mb) && mb < m) { b = utoineg(m); m = mb; } - pradd = precFtaylor(mkvec2(utoineg(m), b), mkvec(c), z, &mi); + if (isnegint2(b, &mb) && mb < m) { b = stoi(-m); m = mb; } + pradd = precFtaylor(mkvec2(stoi(-m), b), mkvec(c), z, &mi); if (pradd > 0) { prec += pradd; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/ifactor1.c new/pari-2.15.2/src/basemath/ifactor1.c --- old/pari-2.15.1/src/basemath/ifactor1.c 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/basemath/ifactor1.c 2022-12-05 21:28:57.000000000 +0100 @@ -3148,12 +3148,12 @@ if (n == 1) retmkvec2(cgetg(1,t_VECSMALL), cgetg(1,t_VECSMALL)); f = cgetg(3,t_VEC); av = avma; - lim = all; if (!lim) lim = tridiv_boundu(n); + lim = all? all-1: tridiv_boundu(n); /* enough room to store <= 15 primes and exponents (OK if n < 2^64) */ (void)new_chunk(16*2); P = cgetg(16, t_VECSMALL); i = 1; E = cgetg(16, t_VECSMALL); - if (lim > 2) + if (lim > 1) { long v = vals(n), oldi; if (v) @@ -3161,7 +3161,7 @@ P[1] = 2; E[1] = v; i = 2; n >>= v; if (n == 1) goto END; } - u_forprime_init(&S, 3, lim-1); + u_forprime_init(&S, 3, lim); oldi = i; while ( (p = u_forprime_next_fast(&S)) ) { @@ -3639,9 +3639,9 @@ if (is_pm1(n)) return aux_end(M,NULL,nb); n = N = gclone(n); setabssign(n); - /* trial division bound */ - lim = all; if (!lim) lim = tridiv_bound(n); - if (lim > 2) + /* trial division bound; look for primes <= lim */ + lim = all? all-1: tridiv_bound(n); + if (lim > 1) { ulong maxp, p; pari_sp av2; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/lambert.c new/pari-2.15.2/src/basemath/lambert.c --- old/pari-2.15.1/src/basemath/lambert.c 2022-10-30 17:07:08.000000000 +0100 +++ new/pari-2.15.2/src/basemath/lambert.c 2022-12-21 21:26:45.000000000 +0100 @@ -133,11 +133,19 @@ return dblL1L2(log(-a)); } -/* uniform approximation to more than 46 bits, 50 bits away from -1/e. */ +/* uniform approximation to more than 46 bits, 50 bits away from -1/e; + * branch = -1 or 0 */ static double -dbllambertWfritsch(double a, int branch) +dbllambertWfritsch(GEN ga, int branch) { - double z, w1, q, w = branch? dbllambertW_1init(a): dbllambertW0init(a); + double a, z, w1, q, w; + if (expo(ga) >= 0x3fe) + { /* branch = 0 */ + double w = dbllog2(ga) * M_LN2; /* ~ log(1+a) ~ log a */ + return w * (1.+w-log(w)) / (1.+w); + } + a = rtodbl(ga); + w = branch? dbllambertW_1init(a): dbllambertW0init(a); if (w == -1.|| w == 0.) return w; z = log(a / w) - w; w1 = 1. + w; q = 2. * w1 * (w1 + (2./3.) * z); @@ -170,10 +178,10 @@ long e = expo(z); if (signe(z) >= 0) pari_err_DOMAIN("lambertw", "z", ">", gen_0, z); wd = e < -512? dbllambertWhalleyspec(dbllog2(z) * M_LN2) - : dbllambertWfritsch(rtodbl(z), -1); + : dbllambertWfritsch(z, -1); } else - wd = dbllambertWfritsch(rtodbl(z), 0); + wd = dbllambertWfritsch(z, 0); if (fabs(wd + 1) < 1e-5) { long prec2 = prec + EXTRAPRECWORD; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/nffactor.c new/pari-2.15.2/src/basemath/nffactor.c --- old/pari-2.15.1/src/basemath/nffactor.c 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/basemath/nffactor.c 2022-12-05 21:29:05.000000000 +0100 @@ -2090,11 +2090,21 @@ long i, l, nbguessed, nbroots, nfdegree; pari_sp av; - T = get_nfpol(nf, &nf); + T = get_nfpol(nf, &nf); nfdegree = degpol(T); RgX_check_ZX(T, "nfrootsof1"); - if (nf && nf_get_r1(nf)) return trivroots(); - disc = nf ? nf_get_disc(nf): ZX_disc(T); - index = nf ? nf_get_index(nf): gen_1; + if (nf) + { + if (nf_get_r1(nf)) return trivroots(); + disc = nf_get_disc(nf); + index = nf_get_index(nf); + } + else + { + if (odd(nfdegree) || signe(leading_coeff(T)) != signe(constant_coeff(T))) + return trivroots(); + disc = ZX_disc(T); + index = gen_1; + } /* Step 1 : guess number of roots and discard trivial case 2 */ if (DEBUGLEVEL>2) timer_start(&ti); nbguessed = guess_roots(T, disc, index); @@ -2102,7 +2112,6 @@ timer_printf(&ti, "guessing roots of 1 [guess = %ld]", nbguessed); if (nbguessed == 2) return trivroots(); - nfdegree = degpol(T); fa = factoru(nbguessed); LP = gel(fa,1); l = lg(LP); LE = gel(fa,2); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/basemath/trans1.c new/pari-2.15.2/src/basemath/trans1.c --- old/pari-2.15.1/src/basemath/trans1.c 2022-10-30 17:07:08.000000000 +0100 +++ new/pari-2.15.2/src/basemath/trans1.c 2022-12-21 18:55:47.000000000 +0100 @@ -423,6 +423,12 @@ powr0(GEN x) { return signe(x)? real_1(realprec(x)): mpexp0(x); } +/* 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; } + /* x t_POL or t_SER, return scalarpol(Rg_get_1(x)) */ static GEN scalarpol_get_1(GEN x) @@ -474,7 +480,8 @@ y = matid(lx-1); for (i=1; i<lx; i++) gcoeff(y,i,i) = gpowg0(gcoeff(x,i,i)); return y; - case t_VEC: /* handle extended t_QFB */ + case t_VEC: if (!is_ext_qfr(x)) break; + /* fall through handle extended t_QFB */ case t_QFB: return qfbpow(x, gen_0); case t_VECSMALL: return identity_perm(lg(x) - 1); } @@ -930,11 +937,19 @@ if (n == 0) return gpowg0(x); if (n == 1) - switch (typ(x)) { - case t_VEC: /* handle extended t_QFB */ + { + long t = typ(x); + if (is_scalar_t(t)) return gcopy(x); + switch(t) + { + case t_POL: case t_SER: case t_RFRAC: case t_MAT: case t_VECSMALL: + return gcopy(x); + case t_VEC: if (!is_ext_qfr(x)) break; + /* fall through handle extended t_QFB */ case t_QFB: return qfbred(x); - default: return gcopy(x); } + pari_err_TYPE("gpow", x); + } if (n ==-1) return ginv(x); switch(typ(x)) { @@ -971,7 +986,8 @@ long N[] = {evaltyp(t_INT) | _evallg(3),0,0}; affsi(n,N); return pow_polmod(x, N); } - case t_VEC: /* handle extended t_QFB */ + case t_VEC: if (!is_ext_qfr(x)) pari_err_TYPE("gpow", x); + /* fall through handle extended t_QFB */ case t_QFB: return qfbpows(x, n); case t_POL: if (RgX_is_monomial(x)) return pow_monome(x, n); @@ -1009,7 +1025,8 @@ case t_FRAC: pari_err_OVERFLOW("lg()"); - case t_VEC: /* handle extended t_QFB */ + case t_VEC: if (!is_ext_qfr(x)) pari_err_TYPE("gpow",x); + /* fall through handle extended t_QFB */ case t_QFB: return qfbpow(x, n); case t_POLMOD: return pow_polmod(x, n); default: { @@ -1336,7 +1353,7 @@ gpowers(GEN x, long n) { if (n < 0) return cgetg(1,t_VEC); - return gen_powers(x, n, 1, (void*)x, &_sqr, &_mul, &_one); + return gen_powers(x, n, 0, (void*)x, &_sqr, &_mul, &_one); } /* return [q^1,q^4,...,q^{n^2}] */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/funclist new/pari-2.15.2/src/funclist --- old/pari-2.15.1/src/funclist 2022-10-06 01:54:01.000000000 +0200 +++ new/pari-2.15.2/src/funclist 2022-12-21 21:26:47.000000000 +0100 @@ -782,7 +782,7 @@ 1021505408 1234 ../functions/number_fields/nfrootsof1 636643458 1419 ../functions/number_fields/nfsnf 1591394803 825 ../functions/number_fields/nfsolvemodpr -3416132361 3006 ../functions/number_fields/nfsplitting +977270902 3019 ../functions/number_fields/nfsplitting 4201087916 1937 ../functions/number_fields/nfsubfields 2051539594 1243 ../functions/number_fields/nfsubfieldscm 1830928774 511 ../functions/number_fields/nfsubfieldsmax @@ -873,8 +873,8 @@ 4089779703 347 ../functions/number_theoretical/factorial 708067171 2084 ../functions/number_theoretical/factorint 3057401018 2509 ../functions/number_theoretical/factormod -3821384765 1870 ../functions/number_theoretical/factormodDDF -2186768531 1752 ../functions/number_theoretical/factormodSQF +2948006020 1940 ../functions/number_theoretical/factormodDDF +2403418253 1709 ../functions/number_theoretical/factormodSQF 4210554035 2456 ../functions/number_theoretical/factormodcyclo 3682822015 707 ../functions/number_theoretical/ffcompomap 1959832413 551 ../functions/number_theoretical/ffembed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/functions/number_fields/nfsplitting new/pari-2.15.2/src/functions/number_fields/nfsplitting --- old/pari-2.15.1/src/functions/number_fields/nfsplitting 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/functions/number_fields/nfsplitting 2022-11-30 14:34:53.000000000 +0100 @@ -21,9 +21,9 @@ embedding of $\Q[x]/(P)$ in its splitting field given by a polynomial (implicitly modulo $S$, as in \kbd{nfisincl}). - \item $\fl = 2$: return $[S,C]$ where $C$ is a rational function whose image - in $\Q[x]/(S)$ yields an embedding; this avoids inverting the denominator, - which is costly. when the degree of the splitting field is huge. + \item $\fl = 2$: return $[S,C]$ where $C$ is vector of rationals functions + whose image in $\Q[x]/(S)$ yields the embedding; this avoids inverting the + denominator, which is costly. when the degree of the splitting field is huge. \item $\fl = 3$: return $[S, v, p]$ a data structure allowing to quickly compute the Galois group of the splitting field, which is used by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/functions/number_theoretical/factormodDDF new/pari-2.15.2/src/functions/number_theoretical/factormodDDF --- old/pari-2.15.1/src/functions/number_theoretical/factormodDDF 2020-03-27 15:32:39.000000000 +0100 +++ new/pari-2.15.2/src/functions/number_theoretical/factormodDDF 2022-11-30 14:35:28.000000000 +0100 @@ -17,17 +17,19 @@ \item $D$ omitted: factor over the field of definition of $f$, which must be a finite field. - This is somewhat faster than full factorization. The coefficients of $f$ - must be operation-compatible with the corresponding finite field. The result - is a two-column matrix: - - \item the first column contains monic (squarefree) pairwise coprime polynomials - dividing $f$, all of whose irreducible factors have degree $d$; + If $f$ is not squarefree, the result is undefined. + The coefficients of $f$ must be operation-compatible with the corresponding + finite field. The result is a two-column matrix: + + \item the first column contains monic (squarefree, pairwise coprime) + polynomials dividing $f$, all of whose irreducible factors have + the same degree $d$; \item the second column contains the degrees of the irreducible factors. - The factors are ordered by increasing degree and the result is canonical: it - will not change across multiple calls or sessions. + The factorization is ordered by increasing degree $d$ of irreducible factors, + and the result is obviously canonical. + This function is somewhat faster than full factorization. \bprog ? f = (x^2 + 1) * (x^2-1); @@ -43,7 +45,7 @@ ? for(i=1,10^5,factormodDDF(f,3)) time = 424 ms. - ? for(i=1,10^5,factormod(f,3)) \\ full factorization is slower + ? for(i=1,10^5,factormod(f,3)) \\ full factorization is a little slower time = 464 ms. ? liftall( factormodDDF(x^2 + 1, [3, t^2+1]) ) \\ over F_9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/functions/number_theoretical/factormodSQF new/pari-2.15.2/src/functions/number_theoretical/factormodSQF --- old/pari-2.15.1/src/functions/number_theoretical/factormodSQF 2020-03-27 15:32:39.000000000 +0100 +++ new/pari-2.15.2/src/functions/number_theoretical/factormodSQF 2022-11-30 14:35:28.000000000 +0100 @@ -17,9 +17,8 @@ \item $D$ omitted: factor over the field of definition of $f$, which must be a finite field. - This is somewhat faster than full factorization. The coefficients of $f$ - must be operation-compatible with the corresponding finite field. The result - is a two-column matrix: + The coefficients of $f$ must be operation-compatible with the corresponding + finite field. The result is a two-column matrix: \item the first column contains monic squarefree pairwise coprime polynomials dividing $f$; @@ -27,8 +26,8 @@ \item the second column contains the power to which the polynomial in column $1$ divides $f$; - The factors are ordered by increasing degree and the result is canonical: it - will not change across multiple calls or sessions. + This is somewhat faster than full factorization. The factors are ordered by + increasing exponent and the result is obviously canonical. \bprog ? f = (x^2 + 1)^3 * (x^2-1)^2; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/language/intnum.c new/pari-2.15.2/src/language/intnum.c --- old/pari-2.15.1/src/language/intnum.c 2022-10-30 17:07:08.000000000 +0100 +++ new/pari-2.15.2/src/language/intnum.c 2022-12-21 18:53:50.000000000 +0100 @@ -2392,8 +2392,9 @@ } /* F t_RFRAC */ if (a < 2) a = 2; - vF = -poldegree(F, -1); rs = gtodouble(real_i(s)); + vF = -poldegree(F, -1); + if (vF <= 0) pari_err(e_MISC, "sum diverges in sumeulerrat"); r = polmax(gel(F,2)); N = maxss(30, a); lN = log2((double)N); RS = maxdd(1./vF, log2(r) / lN); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/factor new/pari-2.15.2/src/test/32/factor --- old/pari-2.15.1/src/test/32/factor 2022-03-11 17:52:03.000000000 +0100 +++ new/pari-2.15.2/src/test/32/factor 2022-12-05 21:28:57.000000000 +0100 @@ -165,6 +165,36 @@ [x + Mod(3*a, a^2 - 2) 1] +[ 2 1] + +[ 5 1] + +[ 11 1] + +[ 17 1] + +[ 37 1] + +[ 67 1] + +[18084262717 1] + + +[ 2 1] + +[ 5 1] + +[ 11 1] + +[ 17 1] + +[ 37 1] + +[ 67 1] + +[831974948142355246286065325186245612497373357862036849743 1] + + [289*x^4 + 1 8] @@ -405,4 +435,4 @@ [x^2 + (a^3 + a^2 + a + 1) 1] -Total time spent: 206 +Total time spent: 446 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/hypergeom new/pari-2.15.2/src/test/32/hypergeom --- old/pari-2.15.1/src/test/32/hypergeom 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/32/hypergeom 2022-11-16 10:36:04.000000000 +0100 @@ -95,6 +95,7 @@ -127 -127 -124 +1.0000000000000000000000000000000000000 *** at top-level: airy(O(x)) *** ^---------- *** airy: incorrect type in airy (t_SER). @@ -114,4 +115,4 @@ *** at top-level: hypergeom([1,2,3,4],[],1/2) *** ^--------------------------- *** hypergeom: sorry, this hypergeometric function is not yet implemented. -Total time spent: 4724 +Total time spent: 5518 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/ideal new/pari-2.15.2/src/test/32/ideal --- old/pari-2.15.1/src/test/32/ideal 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/32/ideal 2022-12-23 17:01:53.000000000 +0100 @@ -245,15 +245,11 @@ [] *** nfinit: Warning: nonmonic polynomial. Result of the form [nf,c]. [[2, [0, 1]~, 2, 1, [0, -2; 1, 0]]] -[-3, 6, -2, 1, -2, -2]~ -[-22, -68, -54, -41, 55, -58]~ -[-31, -13, -33, 4, 51, -56]~ -[3, 0, -2, -6, 7, -1]~ 1 1 [1/9, 1/18, 0, 0, 0, 0]~ -[1/3, 2/3, 1/3, 1, 1/3, -1/3]~ -[1, 0, 0, -1, 1, 2]~ +1 +1 [1 0 0 4/9] @@ -328,4 +324,4 @@ *** at top-level: idealstar(K,[4,Vecsmall([1,1])]) *** ^-------------------------------- *** idealstar: incorrect type in Idealstar [incorrect archimedean component] (t_VECSMALL). -Total time spent: 78 +Total time spent: 59 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/lambert new/pari-2.15.2/src/test/32/lambert --- old/pari-2.15.1/src/test/32/lambert 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/32/lambert 2022-12-21 21:26:45.000000000 +0100 @@ -51,6 +51,7 @@ 73087957949162547505515081005140328081624 -127 realprecision = 38 significant digits +2294.8466716835068696527927859936167900 [80756, 143546, 206207, 268880, 331575, 394291, 457025, 519772, 582530, 6452 97] [645297, 1273229, 1901362, 2529568, 3157809, 3786071, 4414346, 5042630, 5670 @@ -128,4 +129,4 @@ *** at top-level: lambertw(mie+x+O(x^2)) *** ^---------------------- *** lambertw: odd valuation at branch point. -Total time spent: 1577 +Total time spent: 1730 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/nfrootsof1 new/pari-2.15.2/src/test/32/nfrootsof1 --- old/pari-2.15.1/src/test/32/nfrootsof1 2017-11-09 10:26:14.000000000 +0100 +++ new/pari-2.15.2/src/test/32/nfrootsof1 2022-12-05 21:29:05.000000000 +0100 @@ -8,4 +8,6 @@ 4 68 170 -Total time spent: 5876 +[2, -1] +[2, -1] +Total time spent: 2617 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/polred new/pari-2.15.2/src/test/32/polred --- old/pari-2.15.1/src/test/32/polred 2022-09-24 17:32:27.000000000 +0200 +++ new/pari-2.15.2/src/test/32/polred 2022-12-21 21:26:45.000000000 +0100 @@ -30,9 +30,8 @@ x^3 + Mod(y^2 - 2, y^3 - y - 1)*x^2 + Mod(-y + 1, y^3 - y - 1)*x + Mod(y - 1 , y^3 - y - 1) x^9 - 4*x^8 + 8*x^7 - 9*x^6 + 7*x^5 - 3*x^4 - x^3 + 4*x^2 - 3*x + 1 -Mod(0, x^3 + Mod(y^2 + y - 2, y^3 - y - 1)*x^2 + Mod(-y^2 + 3, y^3 - y - 1)* -x + Mod(y^2 - 1, y^3 - y - 1)) -Mod(0, x^9 - 4*x^8 + 8*x^7 - 9*x^6 + 7*x^5 - 3*x^4 - x^3 + 4*x^2 - 3*x + 1) +0 +0 Mod(0, x^9 - 4*x^8 + 8*x^7 - 9*x^6 + 7*x^5 - 3*x^4 - x^3 + 4*x^2 - 3*x + 1) *** nfinit: Warning: nonmonic polynomial. Result of the form [nf,c]. x^2 - 3646554366 @@ -90,4 +89,4 @@ *** 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: 4437 +Total time spent: 6148 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/pow new/pari-2.15.2/src/test/32/pow --- old/pari-2.15.1/src/test/32/pow 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/32/pow 2022-12-21 18:56:02.000000000 +0100 @@ -9,7 +9,11 @@ Mod(1, 3) Qfb(1, 2, -1) Qfb(-1, 2, 1) +[Qfb(1, 2, -1), 0.E-38] +[Qfb(-1, 2, 1), 1.0000000000000000000000000000000000000] +[Qfb(1, 2, -1), 2.0000000000000000000000000000000000000] Vecsmall([1, 2, 3]) +Vecsmall([3, 2, 1]) O(2) *** at top-level: O(2)^-2 *** ^--- @@ -80,9 +84,21 @@ d(9, 11), Mod(7, 11), Mod(3, 11), Mod(6, 11), Mod(1, 11)] [1, 3.1415926535897932384626433832795028842, 9.86960440108935861883449099987 61511353, 31.006276680299820175476315067101395202, 97.4090910340024372364403 -32688705111250, 306.01968478528145326274131004343560648, 961.389193575304437 +32688705111249, 306.01968478528145326274131004343560648, 961.389193575304437 03021944365241989886, 3020.2932277767920675142064930720418319] [2, 6, 18, 54, 162, 486] [] [1] + *** at top-level: [1]^2 + *** ^-- + *** _^s: incorrect type in gpow (t_VEC). + *** at top-level: [1]^1 + *** ^-- + *** _^s: incorrect type in gpow (t_VEC). + *** at top-level: [1]^0 + *** ^-- + *** _^s: incorrect type in gpow (t_VEC). + *** at top-level: List()^1 + *** ^-- + *** _^s: incorrect type in gpow (t_LIST). Total time spent: 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/sumnumrat new/pari-2.15.2/src/test/32/sumnumrat --- old/pari-2.15.1/src/test/32/sumnumrat 2022-10-30 17:07:08.000000000 +0100 +++ new/pari-2.15.2/src/test/32/sumnumrat 2022-12-21 18:53:36.000000000 +0100 @@ -55,4 +55,7 @@ *** at top-level: prodeulerrat(1+1/p) *** ^------------------- *** prodeulerrat: product diverges in prodeulerrat. -Total time spent: 44 + *** at top-level: sumeulerrat(x^2/(1+x),2) + *** ^------------------------ + *** sumeulerrat: sum diverges in sumeulerrat. +Total time spent: 1596 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/32/version new/pari-2.15.2/src/test/32/version --- old/pari-2.15.1/src/test/32/version 2022-11-02 10:52:16.000000000 +0100 +++ new/pari-2.15.2/src/test/32/version 2022-11-05 14:53:53.000000000 +0100 @@ -1,2 +1,2 @@ -[2, 15, 1] +[2, 15, 2] Total time spent: 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/dotest new/pari-2.15.2/src/test/dotest --- old/pari-2.15.1/src/test/dotest 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/dotest 2022-11-18 16:22:22.000000000 +0100 @@ -51,10 +51,10 @@ exec 3>> Bench-$VersionMajor.$VersionMinor.$patch dotestSUF=${dotestSUF:-"sta dyn"} -for arg in $dotestSUF; do - if test -s $execdir/gp-$arg$exe_suff; then - SUF="$SUF $arg" - datadir=`echo 'print(default(datadir))' | $RUNTEST $execdir/gp-$arg -q -f` +for suf in $dotestSUF; do + if test -s $execdir/gp-$suf$exe_suff; then + SUF="$SUF $suf" + datadir=`echo 'print(default(datadir))' | $RUNTEST $execdir/gp-$suf$exe_suff -q -f` fi done file_test=gp.out diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/factor new/pari-2.15.2/src/test/in/factor --- old/pari-2.15.1/src/test/in/factor 2022-03-11 17:52:03.000000000 +0100 +++ new/pari-2.15.2/src/test/in/factor 2022-12-05 21:28:57.000000000 +0100 @@ -32,6 +32,8 @@ factor((x+1)^2/(x^2-4)) factor((x^2+1)/x) factor(x^2+a^3*x-Mod(6,a^2-2)) +factor(83833759205078410,131) +factor(3856811226351960485865701609925634373222448596241780085459117390,131) p1 = (289*x^4 + 1)^8; p2 = (19*x^2 + 1)^16; factor(p1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/hypergeom new/pari-2.15.2/src/test/in/hypergeom --- old/pari-2.15.1/src/test/in/hypergeom 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/in/hypergeom 2022-11-16 10:32:38.000000000 +0100 @@ -171,6 +171,8 @@ f(1.2, 0.3, 4.5, -0.3, 0.8) f(1.2, 1.2, 1.4, -0.3, 0.7) +hypergeom([0,0],[1],2) \\ #2425 + \\ Errors, keep at end airy(O(x)) hypergeom("","",O(x)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/ideal new/pari-2.15.2/src/test/in/ideal --- old/pari-2.15.1/src/test/in/ideal 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/in/ideal 2022-12-23 17:01:53.000000000 +0100 @@ -158,12 +158,12 @@ { for(k=2,5, u=nfalgtobasis(nf,(2*a^2+a+3)*random(2^100*x^6)^k); b=idealredmodpower(nf,u,k); - v=nfeltmul(nf,u,nfeltpow(nf,b,k)); print(v)); } + v=nfeltmul(nf,u,nfeltpow(nf,b,k)); if(exponent(v) > 8, error())); } idealredmodpower(nf,0,2) idealredmodpower(nf,1,2) idealredmodpower(nf,x^5-3*x^4-3*x^3+18*x^2-18*x-54,2) -idealredmodpower(nf,x/2,2) -idealredmodpower(nf,x/12,2) +normlp(idealredmodpower(nf,x/2,2))==1 +normlp(idealredmodpower(nf,x/12,2))==2 \\ #2181 K=nfinit(x^8-x^7+853*x^6-1705*x^5+728461*x^4+1452660*x^3+619196112*x^2+618470208*x+526936617216); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/lambert new/pari-2.15.2/src/test/in/lambert --- old/pari-2.15.1/src/test/in/lambert 2022-09-19 17:42:30.000000000 +0200 +++ new/pari-2.15.2/src/test/in/lambert 2022-12-21 21:26:45.000000000 +0100 @@ -40,6 +40,7 @@ lambertw(-10^(-100),-1) do(lambertw(precision(-0.1,38),-1)) \p38 +lambertw(10^1000) \\ #2429 vector(10,mul,round(10^4*abs(lambertw(mie,mul)))) vector(10,mul,round(10^4*abs(lambertw(mie,10*mul)))) bra(y,k)=if(k!=-1||imag(y)||y>0||y<mie, k, 0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/nfrootsof1 new/pari-2.15.2/src/test/in/nfrootsof1 --- old/pari-2.15.1/src/test/in/nfrootsof1 2017-11-09 10:26:14.000000000 +0100 +++ new/pari-2.15.2/src/test/in/nfrootsof1 2022-12-05 21:29:05.000000000 +0100 @@ -10,3 +10,5 @@ do(x^16+2*x^15-x^14-4*x^13+x^12+4*x^11-2*x^9-3*x^8+7*x^6-9*x^4+4*x^3+4*x^2-4*x+1) do(polcyclo(68)) do(polcyclo(85)) +nfrootsof1(x^2023+x+1) +nfrootsof1(x^2024+x-1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/polred new/pari-2.15.2/src/test/in/polred --- old/pari-2.15.1/src/test/in/polred 2022-09-24 17:32:27.000000000 +0200 +++ new/pari-2.15.2/src/test/in/polred 2022-12-21 21:26:45.000000000 +0100 @@ -10,9 +10,9 @@ rnfpolredabs(K,T) rnfpolredabs(K,T,2) [P,a]=rnfpolredbest(K,T,1); -subst(K.pol,y,a) +liftall(subst(K.pol,y,a)) [P,a,b]=rnfpolredbest(K,T,3); -subst(K.pol,y,a) +liftall(subst(K.pol,y,a)) substvec(T,[x,y],[a,b]) rnfpolred(nfinit(quadpoly(1129,y)),quadray(1129,1)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/pow new/pari-2.15.2/src/test/in/pow --- old/pari-2.15.1/src/test/in/pow 2022-02-25 23:10:32.000000000 +0100 +++ new/pari-2.15.2/src/test/in/pow 2022-12-21 18:55:47.000000000 +0100 @@ -6,9 +6,15 @@ Mat(2)^0 Mod(0,1)^0 Mod(2,3)^0 -Qfb(2,0,-1)^0 -Qfb(2,0,-1)^1 -Vecsmall([3,2,1])^0 +q=Qfb(2,0,-1); +q^0 +q^1 +[q,1.]^0 +[q,1.]^1 +[q,1.]^2 +v=Vecsmall([3,2,1]); +v^0 +v^1 O(2)^1 O(2)^-2 (1/2)^-2 @@ -58,3 +64,9 @@ powers(3, 5, 2) powers(3,-1) powers(3,0) + +\\ERRORS +[1]^2 +[1]^1 +[1]^0 +List()^1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pari-2.15.1/src/test/in/sumnumrat new/pari-2.15.2/src/test/in/sumnumrat --- old/pari-2.15.1/src/test/in/sumnumrat 2022-10-30 17:07:08.000000000 +0100 +++ new/pari-2.15.2/src/test/in/sumnumrat 2022-12-21 18:52:55.000000000 +0100 @@ -32,3 +32,4 @@ sumeulerrat(1/p) prodeulerrat(2) prodeulerrat(1+1/p) +sumeulerrat(x^2/(1+x),2)
