John Cremona on Wed, 03 Aug 2016 16:51:14 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Please test pari-2.8.0 prerelease 1


Built OK from tarball, and make test-all ran fine (with all optional
data installed) on Olinux-x86_64

This is an amazing release!

John

On 1 August 2016 at 23:11, Bill Allombert
<Bill.Allombert@math.u-bordeaux.fr> wrote:
> Dear PARI developers,
>
> We have made available a prerelease of PARI 2.8.0 (alpha).
>
> Please test the prerelease tarball:
> <http://pari.math.u-bordeaux.fr/pub/pari/snapshots/pari-2.8.0-pre1.alpha.tar.gz>
>
> The expected release date is set to the 12/08/2016.
>
> Please also test the standalone 64bit Mac OS X binary:
>
> <http://pari.math.u-bordeaux.fr/pub/pari/mac/snapshots/gp-2.8.0-pre1-osx>
>
> ane the the 64bit windows installer:
> <http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/Pari64-2-8-0-pre1.exe>
>
> I have also built the 32bit Windows installer:
> <http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/Pari32-2-8-0-pre1.exe>
>
> and the following standalone Windows binaries:
>
> 32bit
> <http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp32-2-8-0-pre1.exe>
> <http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp32-readline-2-8-0-pre1.exe>
>
> 64bit
> <http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp64-2-8-0-pre1.exe>
> <http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp64-readline-2-8-0-pre1.exe>
>
> Below is the announcement that will be sent to pari-announce for the
> final release.
>
> Please report any error in the announcement
>
> On behalf of the PARI group,
> Bill and Karim
>
> - - - - - - - - - - - - - - - - - - - -
>
> Dear PARI lovers,
>
> I would like to announce the release of long-awaited pari-2.8.0-ALPHA,
> incorporating two years worth of development into an official release!
>
> The sources and a Windows binary can be obtained through the address
>
>   http://pari.math.u-bordeaux.fr/download.html
>
> This new branch contains three brand new packages (L-functions, Modular
> Symbols and Central Simple Algebras) as well as a wealth of new functions for
> elliptic curves, and many improvements throughout the system.
>
> See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems
> or submit wishlist items.
>
> Have fun !
>
>   K.B.
>
> HIGHLIGHTS FOR PARI-2.8.0-ALPHA: see below for COMPATIBILITY ISSUES.
> ================================
>
> [Systems]
>   - Mingw64 support (Windows 64 bit)
>
>   - Unify 32/64 bit random generators. Probabilistic algorithms should now
>     behave identically on all architecture, provided they do not involve
>     the floating point kernel
>
> [The GP language]
>   - Support for variadic GP functions (having any number of arguments), e.g.
>      ? f(v[..]) = sum(i = 1, #v, v[i])
>      ? f(1, 2, 3, 4, 5)
>      %2 = 15
>
>   - New constant "oo" (for +/- infinity)
>
>   - Simpler handling of polynomial variables: polynomial variables no longer
>     spring into existence whenever a new identifier occurs in the parser,
>     only if a polynomial is explicitly created; e.g. t = 0 no longer creates
>     the "polynomial variable" t thereby messing up variable ordering.
>
>     Functions varhigher() and varlower() allow to define
>     variables of arbitrary priority independently of the session history;
>     variables() returns the list of variables occuring in an object:
>      ? variable(x + y*z / t)
>      %1 = x
>      ? variables(x + y*z / t)
>      %2 = [x, y, z, t]
>
>   - Hashtables/dictionnaries in GP via functions Map, mapget, mapput,
>     mapisdefined, mapdelete
>      ? M = Mat(); \\ empty
>      ? mapput(M, "a", 23); \\ insert key/value: "a" maps to 23
>      ? mapput(M, "b", 43); \\ "b" maps to 43
>      ? mapget(M, "a")      \\ retrieve value attached to key "a"
>      %3 = 23
>      ? M = Map(["a", 23; "b", 43]); \\ fast initialization
>
>   - New functions allow setting precision at the bit-level (instead of the
>     word-level = 64 bits); new default 'realbitprecision' and \pb shortcut,
>     and a function bitprecision()
>
>   - Warn when coercing quotient rings when 'debug' non-zero
>       ? \g1
>       ? Mod(1,2)+Mod(1,3)
>         *** _+_: Warning: coercing quotient rings; moduli 2 and 3 -> 1.
>
>   - More versatile closures: function self() for recursive anonymous
>     functions, call() to apply a function of unspecified arity to arbitrary
>     arguments), fold() such that fold(f,v) = f(...(f(v[1], v[2]), ...,) v[#v])
>
>   - Miscellaneous new GP functions: serprec, powers, parforvec
>
> [Multiprecision Kernel]
>   - incgam, incgamc, eint1 more reliable
>
>   - new functions sinc(x) = sin(x) / x and cotanh = 1/tanh
>
>   - improved p-adic log at high accuracy
>
>   - improved gamma, lngamma and psi at power series arguments
>
> [Numerical sumation and integration]
>   - rewrote numerical integration routines, which can of course
>     directly use the new oo symbol:
>       ? intnum(t = -oo, oo, 1/(1+t^2)) - Pi
>       %1 = 0.E-37
>   - Gauss-Legendre quadrature: intnumgauss()
>
>   - Rewrote numerical sumation (replace Abel-Plana by Euler-Mac Laurin).
>     This changed the sumnum() interface !
>
>   - Monien summation: sumnummonien()
>
>   - Numerical extrapolation: limitnum(), asympnum()
>
>      ? limitnum(n -> (1+1/n)^n) - exp(1)
>      %1 = 0.E-37
>
>      ? asympnum(n -> n! / (sqrt(2*Pi) * n^(n+1/2) * exp(-n)))
>      %2 = [1, 1/12, 1/288, -139/51840, -571/2488320, 163879/209018880,
>      5246819/75246796800, -534703531/902961561600]
>
>   - Continued fractions for numerical approximation via Pade approximants:
>     contfracinit() and contfraceval()
>
>   - Inverse Mellin transforms of Gamma products: gammamellininv()
>
>   - Multiple Zeta Values: zetamult()
>
>       ? zetamult([2,1]) - zeta(3) \\ Euler's identity
>       %1 = 0.E-38
>
>   - zeta(odd integer): use Borwein's "sumalt" algorithm (10 times faster
>     than previous at \p1000)
>
> [Elementary Number Theory]
>   - Bounded factorization factor(n,lim) now always respects the 'lim'
>     argument (was ignored when n fit into a long integer)
>
>   - sumdigits() now allows to specify the base; new function fromdigits()
>
>   - Allow ffgen([p,f]) in addition to ffgen(p^f) and ffgen(T*Mod(1,p))
>
>   - New functions for generic characters: charker, charorder, charconj,
>     charmul, chardiv, chareval
>
>   - New functions for Dirichlet characters: znconreychar, znconreyexp,
>     znconreylog, znconreyconductor, zncharinduce, zncharisodd. See ??Dirichlet
>     The functions idealstar / ideallog now allow omitting 'nf' argument for
>     nf = Q allowing to handle efficiently Dirichlet characters as Hecke
>     characters.
>
>   - Miscellaneous new functions: qfbredsl2(), ispseudoprimepower(),
>       ramanujantau()
>
> [Polynomials]
>   - Real root finder: new function polrootsreal(T, [a,b])
>
>   - factorcantor now uses Shoup-Kaltofen algorithm (much faster)
>
>   - padicfields(p, d) much faster for huge prime p
>
> [Linear Algebra]
>   - faster matrix multiplication over Z (Strassen) and finite fields (better
>     handling of modular kernel)
>
>   - matsolve(a,b) and a^(-1) could give wrong results [or SEGV] when t_MAT
>     'a' was non-square
>
>   - faster implementation of matfrobenius/minpoly
>
>   - matkerint: replace underlying LLL algorithm by mathnf
>     Simple bench: M=matrix(50,55,i,j,random(10^5)); \\ 200 times faster
>
> [Elliptic curves]
>   - Twists and Isogenies: elltwist, ellisogeny, ellisogenyapply, ellxn.
>
>   - Modular polynomial: polmodular(); attached minimal polynomials defining
>     Hilbert class fields: polclass().
>
>   - Formal groups: ellformalw, ellformalpoint, ellformaldifferential,
>     ellformallog, ellformalexp
>
>   - Elliptic curves over finite fields: ellissupersingular(), fast ellcard()
>     over fields of small, medium or large characteristic (SEA, Kedlaya, Satoh),
>     ellsea() for ellcard with early abort (almost prime cardinality)
>     elltatepairing() now reliable for self-pairings
>
>   - Elliptic curves over Q: ellrootno(e, 2 or 3) for non-minimal e is now
>     properly supported, more robust and much faster ellL1() and
>     ellanalyticrank() (The condition ord(L_E,s=1) <= r in ellL1(E,r) is no
>     longer necessary; r is now optional, 0 by default); p-adic heights:
>     ellpadics2, ellpadicheight, ellpadicheightmatrix; p-adic L function:
>     ellpadicL (see also mspadicL);
>
>     Q-isogenous curves and matrix of isogeny degrees: ellisomat; minimal
>     quadratic twist: ellminimaltwist; smallest multiple having good reduction
>     everywhere: ellnonsingularmultiple; new optional flag to forell to loop
>     over isogeny classes.
>
>   - Elliptic curves over number fields: ellinit([a1,...,a5], nf);
>     support elltors, ellorder, elisdivisible, elllocalred, ellminimalmodel,
>     ellan, ellap(E,P), ellcard(E,P) for P a maximal ideal
>
>   - Elliptic curves over p-adic fields: Q_2 is now properly supported,
>     ellpointtoz(E / Qp) has been fixed, added Mazur-Tate-Teitelbaum's L
>     invariant to E.tate; new function ellpadiclog.
>
> [Other Curves of small genus]
>   - Rational points on conics/Q : qfsolve, qfparam [ adapted from Denis Simon's
>     qfsolve.gp ]
>
>   - General cubic to Weierstrass model: ellfromeqn()
>
>   - genus2red: allow rational non integral models + change input so that either
>     genus2red(P) y^2 = P and genus2red([P,Q]) for y^2 + x*Q = P are
>     recognized; the output is now normalized + many bug fixes.
>
>   - new functions ellpadicfrobenius, hyperellpadicfrobenius, hyperellcharpoly
>
> [Modular symbols & p-adic L functions] New package; see ??8
>   - Modular symbols for Gamma_0(N):
>     msatkinlehner     msfromell        mshecke       mspathlog
>     mscuspidal        msfromhecke      msinit        msqexpansion
>     mseisenstein      msgetlevel       msissymbol    mssplit
>     mseval            msgetsign        msnew         msstar
>     msfromcusp        msgetweight      mspathgens
>
>   - Attached overconvergent symbols, p-adic distributions and L-functions:
>     mstooms, msomseval, mspadicL, mspadicinit, mspadicmoments, mspadicseries
>
> [Complex L-functions] New package; see ??6 and ??Ldata
>    lfun                lfundiv             lfunmfspec
>    lfunabelianrelinit  lfunetaquo          lfunmul             lfuntheta
>    lfunan              lfunhardy           lfunorderzero       lfunthetainit
>    lfuncheckfeq        lfuninit            lfunqf              lfunzeros
>    lfunconductor       lfunlambda          lfunrootres         lfunartin
>    lfuncreate
>
> [Associative and central simple algebra] New package, see the tutorial !
>    algabsdim         algdisc           algisramified     algrandom
>    algadd            algdivl           algissemisimple   algrelmultable
>    algalgtobasis     algdivr           algissimple       algsimpledec
>    algaut            alghasse          algissplit        algsplittingdata
>    algb              alghassef         algleftmultable   algsplittingfield
>    algbasis          alghassei         algmul            algsplittingmatrix
>    algbasistoalg     algindex          algmultable       algsqr
>    algcenter         alginit           algneg            algsub
>    algcentralproj    alginv            algnorm           algsubalg
>    algchar           alginvbasis       algpoleval        algtableinit
>    algcharpoly       algisassociative  algpow            algtensor
>    algdecomposition  algiscommutative  algprimesubalg    algtrace
>    algdegree         algisdivision     algquotient       algtype
>    algdim            algisdivl         algradical
>                      algisinv          algramifiedplaces
>
> [Number Fields]
>   - New "compositum" functions. nfcompositum(): over number fields;
>     new binary flag to polcompositum() to assume fields are linearly disjoint;
>     nfsplitting: equation for splitting field / Q
>
>   - Class groups and units: use GRH-guaranteed bounds in bnfinit for residue
>     estimate; made qfbclassno more reliable: correct for |D| < 2.10^10 and no
>     known counter example; of course you can double check with quadclassunit()
>     (rigorous under GRH but much slower up to |D| ~ 10^18 or so)
>
>   - Class field theory: bnrisgalois, bnrgaloismatrix, bnrgaloisapply;
>     faster and more reliable rnfkummer;  bnrconductor(bnr, chi) as a shortcut
>     for bnrconductor(bnr, Ker chi), same for bnrisconductor, bnrdisc and
>     bnrclassno; bnrchar to define classes of Hecke characters, e.g. trivial on
>     some congruence subgroup.
>
>   - Relative number fields: rnf structures may now contain a full absolute nf
>     struct, attached to rnf.polabs; nfinit(rnf) returns it. This allows rnf
>     functions to return objects in standard notation (e.g. ideals in HNF
>     instead of as a vector of t_POLMOD generators); add optional flag to
>     that effect in rnfeltabstorel, rnfeltdown, rnfeltup, rnfidealreltoabs,
>     rnfinit. New functions rnfidealprimedec, rnfidealfactor. Add optional
>     flag to nfhnf and nfsnf to return transformation matrices.
>
>   - idealprimedec now allows an optional 3rd argument, to limit f(P/p)
>
>   - Extend idealchinese() to impose sign conditions at specified real places
>
>   - Improvements in thue(), whose solutions are now canonically ordered
>     (lexsort); support (powers of) imaginary quadratic equations.
>
>
> COMPATIBILITY ISSUES BETWEEN 2.7.* and 2.8.*
> ============================================
>
>   - [libpari] comment out function names obsoleted during the 2.3.* cycle
>      (deprecated before 2007). See PARI_OLD_NAMES.
>
>   - t_STR used to compare as larger than any real number via < or >
>     operators. Such a comparison now raises an exception.
>
>   - valuation(0,p), nfeltval(nf,0,pr), idealval(nf,0) precision(0),
>     padicprec(0,p) now all return +oo
>     infinite slopes of newtonpoly replaced by +oo (instead of 2^63-1)
>     poldegree(0) now returns -oo
>
>   - default 'compatible' and 'strictmatch' have been obsoleted. They are now
>     no-ops.
>
>   - GP: polynomial variable 'y' is now always defined on startup,
>     with priority lower than 'x'; variables of arbitrary priority can now be
>     created: 'x' is no longer guaranteed to have maximal priority,
>     nor MAXVARN to have minimal priority.
>
>   - the meaning of precision(x, n) no longer depends on the type of x: it now
>     always refers to floating point precision. Before the change:
>     precision([O(2),O(3),O(x)], 10) -> [O(2^10),O(3^10),O(x^10)]
>
>   - no longer print 0 t_POLMOD as "0", e.g. output explicitly Mod(0,x) not '0'.
>
>   - content([]) -> 0 [ was 1 ]
>
>   - polsturm(T, a, b) is still supported but deprecated, use
>     polsturm(T, [a,b])
>
>   - nfdisc, nfbasis: no longer support the old (T,flag,fact) arguments.
>     Use the generic [T,listP] syntax
>
>   - ellbil(E,P,Q) is now deprecated, use ellheight(E,P,Q)
>
>   - rnfconductor now returns [cond, bnr, H] instead of [cond, bnr.clgp, H]
>
>   - The sumnum interface has changed, see ??sumnum
>
>   - The broken implementation of Dedekind zeta function zetakinit / zetak
>     has been removed, use the new Lfun package ! E.g.
>       \\ ~ zetakinit(x^3-2) on the critical line up to height 100
>       ? L = lfuninit(x^3 - 2, [100]);
>       \\ ~ zetak
>       ? lfun(L, 1/2 + 10*I) \\ value at this point
>
>   - polredabs(T) now internally uses the polredabs([T,listP]) strategy,
>     making it much faster in favourable cases, while still always returning
>     a canonical defining polynomial; polredabs([T,listP]) no longer returns 0
>     if the attached order cannot be proven to be maximal: it computes the
>     expected canonical polynomial in all cases, which can be slow. Always use
>     polredbest() if you do not require a canonical output.
>
> -------------------------------------------------------------------------------
>
> P.S. The Changelog
>
> Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
>
> Done for version 2.8.0 (released 01/08/2016):
>
>   Fixed
>     1- make install fails on OS/X: ln -s libpari.dylib libpari.dylib fails
>     2- Q_pvalrem(t_FRAC) => wrong result
>     3- [] == 0 but []~ != 0  (now []~ == 0 as well) [#1560]
> BA  4- test-kernel did not work when using --mt=pthread
> BA  5- ellheegner was using too much memory in some case
>     6- ellap can overflow on 32-bit machine [#1558]
>        ellap(ellinit([582304190,64196421]),2147438927) -> overflow
>        ellap(ellinit([-1137195,489565862]),2038074751) -> wrong result
>     7- nfhilbert(K,x,y, P above 2) could give wrong results [#1561]
>     8- rnfkummer sometimes failed to return an answer: error or oo loop.
>        Relied on exhaustive enumeration of an Fp-vector space, some of
>        whose elements would trigger an error. Replace by Fp-linear algebra
>        that directly picks the correct line (O(d^3) algo instead of O(p^d),
>        and no failures). Only compute the defining poly for the right element.
> XR  9- padicfields(huge p, d) was very slow [even though ramification is tame]
>    10- gcd(1/2, 1+I*1.) -> SEGV [#1563], 2.5.5 returned the wrong answer 1/2
>    11- mathnf(t_VEC) could corrupt input (change sign)
>    12- [libpari] RgM_transmul did not work
>    13- [libpari] Fq_issquare didn't support T=NULL
>    14- [libpari] nfpow_u didn't handle non-integral rational numbers
>    15- eint1(0) -> stack overflow [#1568]
>    16- liftint(List([0])) -> gerepile bug
>    17- factorint(n,flag): flag was ignored when n fit into a long
>    18- factor(n,lim): lim was ignored when n fit into a long
>    19- nfrootsQ(t_POL with leading coeff -1) could miss some solutions, e.g.
>        nfroots(,-y^2-24476*y+119814917) -> [] instead of [-28657,4181]
>    20- precprime(1) -> invalid t_INT [#1576]
>    21- gaffsg(0, t_PADIC): wrong valuation
>    22- thue(f^e*g, ...), e even, (f,g)=1 missed solutions such that f<0
>    23- faster znlog when p-1 has only smallish prime factors.
>    24- (t_INTMOD with word-sized modulus)^(huge negative power) wrong [#1584]
>    25- (gp -p N) or (primelimit=N in gprc_ for N >= 436273290 resulted in an
>        incorrect primetable. N.B. Such commands are now useless: needed primes
>        are produced dynamically anyway.
>    26- monomial(exact zero, d, v) returned an invalid t_POL / t_RFRAC
>    27- contfracpnqn(v, n) returned partial quotients p[-1]/q[-1] ...
>        p[n-1]/q[n-1], instead of the documented p[0]/q[0] ... p[n]/q[n] [#1580]
>    28- isprime(N, 0) was often slower than either of isprime(N, 1 or 2)
>    29- factor((3+4*I)/25) -> factor 2+I had 0 exponent [#1586]
>    30- made qfbclassno more reliable (fixes all counter examples in [#1411])
> BA 31- iferr() could crash if some component of the t_ERROR were clones.
>    32- nffactor() could overflow the stack when default accuracy too low: e.g.
>        nffactor(y^2-22, x^2+926246528884912528275985458927067632*y-4344481316563541186659879867597013188)
>    33- some elliptic curve functions accepted (elladd, ellmul) a Weierstrass
>        5-uple [a1,a2,a3,a4,a6] instead of an ell structure. No longer.
>        Now only ellinit and ellchangecurve allow this syntax.
>    34- incorrect rounding in mulrr/divrr for one-word precision reals.
> BA 35- multiif did not handle correctly return() in conditions [#1590]
>    36- [0..5] -> [0,0,0,0,0] on some architectures
>    37- is_gener_Fp could return wrong results
>    38- Fq_sqrtn(t_INT,..,&zeta) could return a wrong root of 1
>    39- bnfinit: SEGV due to precision issues [#1592]
>    40- zm_zc_mul only worked for square zm matrices
>    41- genus2red(0,27*x^5+97*x^4+118*x^3+60*x^2+13*x+1,3) -> bug msg [#1596]
>    42- [gphelp] oo loop when $COLUMNS too small [#1594]
>    43- genus2red(x,-x^6-3*x^4-10*x^2-1,3) -> impossible inverse [#1597]
>    44- factoru(1) returned a t_MAT instead of the expected "matsmall" [#1598]
>    45- FpM_charpoly wrong in small characteristic [#1602]
>    46- Ser(Mod(0,2)) => incorrect object [#1587]
>    47- Ser(Mod(1,2)*x^2,,4) => incorrect precision [#1587]
>    48- Ser(x,v,prec < 0) => crash [#1587]
>    49- The t_SER Mod(0,2) + O(x^n) was not handled properly [precision and
>        valuation would change unexpectedly] [#1587]
>    50- when compatible = 3; series() used a random precision
>    51- genus2red(0,6*x^6+5*x^4+x^2+1,7) -> impossible inverse [#1597]
>    52- isprime(2030967737887612953751815611955778057721609672149695775998900201419048774375002716065557720510887824952942799737911826638068045234238082640629966597954851668852106621828704531597859470496362810381251800973022824003330423370127762722630493369197869948901862977534730314352222720177713223750671181797)
>        -> SEGV [#1604]
>    53- genus2red(x^3+1,1) -> type error [#1597]
>    54- gphelp did not handle === correctly [#1603]
> XR 55- bnrL1(bnrinit(bnfinit(x^2-168),[6,[1,1]],1)) -> bug in ArtinNumber[#1601]
>    56- FpXY_evaly() wrong when evaluating at 0
> BA 57- [win32] gp could crash at start up [#1607]
>    58- nfisincl(t_POL, t_POL) could lead to wrong negative results
>    59- polresultant(1+x*z^2,1+y*z^4,z) -> GC error [#1614]
> BA 60- ellcard over non-prime fields of large char could return wrong results
>    61- [libpari] FpX_roots could produce GC errors [#1618]
>    62- weber(1+I) was missing its imaginary part
>    63- (1+I)*(1+1/2*I) => wrong result (type errors) [#1619]
>    64- contfracpnqn([a]) => [1,a;0,1] instead of [a,1;1,0]
>    65- primes([2^50, 2^50+200000]) => stack overflow
>    66- issquare((x+1/2)^2,&z); z => 1.0*x+0.5 instead of x+1/2
>    67- possibly wrong result in nfsnf
>    68- possibly missing roots in nfroots (when using Trager)
>    69- quadray(bnf, ideal) did not work
>    70- thue(-14*x^3 + 10*x^2 + 63*x - 5,1) -> "short continued fraction" [#1629]
>    71- thue(29*x^3+130*x^2-35*x-48,1) -> "round error" bug
>    72- T=thueinit(10*x^3+6*x^2-41*x+8,1); thue(T,8) => SEGV [#1630]
>    73- ellrootno(e,p = 2 or 3) when e not minimal at p => random result
>    74- catastrophic cancellation in ellheight (at oo) [#1637]
>    75- bnfnewprec could return a corrupt bnf structure:
>         K=bnfinit(x^3-15667*x^2-88630960*x-1836105977032,1);
>         bnfisprincipal(K,[29,14,15;0,1,0;0,0,1],3) -> oo loop
>    76- agm(1,2+O(5)) -> SEGV [#1645]
> BA 77- [cygwin64] ellap(ellinit([0,0,1,-1,0]),10007) broken
>    78- primes([-5,5]) -> [5] (spurious absolute values)
>    79- matqr([;]) -> crash
>    80- Fp_rem_mBarrett could return a non-normalized result
>        p=436^56-35;Mod(271,p)^((p-1)/2) -> p+1
>    81- plotcopy would corrupt "string" objects (ROt_ST)
> BA 82- [GP] default arguments to GP functions could cause corruption [#1658]
> VBr83- [darwin] remove obsolete linker options that cause crashes [#1623]
>    84- divisors([2,1]) -> SEGV                                    [#1664]
>    85- acos([Pol(1)]) -> GC bug [#1663]
>    86- matsolve(a,b) and a^(-1) gave wrong results [or SEGV] when t_MAT a
>        was not square and a,b "modular" (F2m,Flm,FpM,FqM,F2xqM,FlxqM) [#1666]
>    87- primes([1,Pol(2)]) -> SEGV [#1668]
>    88- znlog(0,Mod(1,4),1) -> 0 (instead of [])
>    89- polzagier / sumalt(,1) / sumpos(,1) were slow and used too much memory
>    90- sumpos was wasting time when pre-computing \sum 2^e a(k*2^e) [ only
>        needed for k odd, but was also done for k = 0 mod 4 ] + improve accuracy
>    91- intnum(x=[0,-1/2],[oo,-3/2],1/(sqrt(x)+x^(3/2))) -> junk t_COMPLEX
>        (more generally: one endpoint has an algebraic singularity and the
>        other is +-oo, non-oscillatory
>    92- intnum(x = [-oo,-3/2], [oo,-5/2], f(x)) --> loss of accuracy due to
>        confusion between endpoint behaviours a/b in intnuminit data
>        E.g. f(x)=(x<0,1/(1+(-x)^(3/2)), 1/(1+x^(5/2)));
>    93- intnum(x = [-oo,-3/2], [oo,-5/2], f(x)) --> loss of accuracy due to
>        confusion between endpoint behaviours a/b in intnuminit data
>        E.g. f(x)=(x<0,1/(1+(-x)^(3/2)), 1/(1+x^(5/2)));
>    94- intnum(x=[0,-1/2],[1,-1/3], x^(-1/2) + (1-x)^(-1/3)) -> error [didn't
>        suport singularities at both endpoints]
>    95- buffer overflow after default(format,"f.precision") (whenever many
>        initial zeroes)
>    96- qfminim(A, 0, ...) -> stack overflow [#1682]
>    97- e=ellinit("11a1"); ellztopoint(e,3*e.omega[1]/5) -> [5, junk]
>        (instead of expected [5,5]) [#1683]
>    98- bnfinit(quadhilbert(-2180)) -> precision error [#1688]
>    99- div_scal_rfrac could create an invalid t_POL [#1651]
>   100- polroots(t_POL with leading coeff = 0) -> fp exception or error [#1690]
>   101- \r cannot deal with very long filenames [#1616]
>   102- rnfisabelian(nf, non monic t_POL) -> SEGV [#1693]
>   103- Vecrev(x,n) / Colrev(x,n) when 'n' is not omitted: it wasn't true
>        that Colrev/Polrev were inverse functions [#1698]
>   104- possibly incorrect result in nfdisc(T,listP) even though listP included
>        all prime divisors of the field discriminant. Example:
>         p=10^100+267; q=10^120+79;
>         T=polcompositum(x^2-p,x^2-q,2);
>         nfdisc([T,[2,p,q]])
>   105- wrong dim(Ker) returned by ZM_pivot => SEGV in Z-linear algebra routines.
>        E.g. setrand(1);quadclassunit(-612556842419) [#1700]
>   106- moebius(factor(18)) -> 1 instead of 0 [#1702]
>   107- ispower(-167^10) => domain error [#1703]
>   108- ispowerful(factor(0)) != ispowerful(0)
>   109- expm1(2*I) => wrong result
>   110- gamma(1+a*x+O(x^2)) => error [#1707]
>   111- printsep() printed its argument in random format, instead of f_RAW as
>        print() [#1708]
>   112- nfdisc(x^10 - 29080*x^5 - 25772600) -> oo loop [#1710]
>   113- forprime engine could skip (fast) sieve in favour of (slow)
>        nextprime [#1711]
>   114- 0^[1] -> domain error [#1713]
>   115- memory leaks (clones) in ellchangecurve [#1716]
>   116- zeta inaccurate around 0 [ from 2.7 ], [#1714]
>   117- ellj(simple t_SER in 'x) much slower than in other variable [#1720]
>   118- bnrrootnumber did not support the trivial character in the form [0,..,0]
>   119- default(log,1) when logfile is write-protected later lead to SEGV [#1730]
> BA120- 2-adic gamma function: fix accuracy loss
>   121- A==A -> 0 for A a t_SER of huge accuracy (so that A-A overflows
>        valuation) [#1734]
> XR122- P=[1,-2,12,-12,-181,-4,-6899,9780,6360,702,-45]; setrand(3); nfdisc(P)
>        -> wrong answer [ crash if setrand(138) ] [#1735]
>   123- select(x->x,Vecsmall([1,2,3]),1) -> crash [#1737]
>   124- (1./x+O(1))-(1./x+O(1)) -> 0.E-38*x^-2+O(x^-1) [#1741]
> BA125- [libpari] RgV_to_RgX_reverse did not work if v[1] or v[2] was 0
>   126- bnfinit(x^3-87156*x^2-6728799*x-456533) [#1736]
>   127- Rg_to_ff: incorrect type in zk_to_ff [#1755]
> BA128- nfsubfields could fail [#1758]
>   129- rare SEGV in ArtinNumber [#1759]
>   130- K.codiff incorrect if [K:Q] > 2
>   131- chinese([]) -> '1' instead of Mod(0,1)
>   132- m1=Mod(0,1);m2=Mod(1,x^2+1); chinese(m1,m2) -> m1; chinese(m2,m1) -> m2
>        [instead of error]
>   133- nfrootsof1(polcyclo(85)) -> 85 instead of 170 [#1766]
>   134- at \p19, polroots((x+1)^2 * (x-1)^7 * (x^2-x+1)^5 * 1.0) -> SEGV [#1767]
> BA135- ellsea returned the trace instead of the cardinal as documented.
> BA136- ellsea(,,1)  could return a wrong result [#1768]
>   137- rnfconductor: sanity checks were not taken into account
> MC138- memory leak in pari_close: sopath not freed
> HC139- incgam(30,60) < 0. More generally, wrong results for s >> 1 [#1689]
> HC140- excessive loss of accuracy in incgam, incgamc, eint1
>   141- isprimepower(30011^(3*17)) returned 0
>   142- a = Mod(1,x); z = Mod(0,Pol(1)); chinese(a, z) works
>        but chinese(a, simplify(z)) failed
> BA143- [mpi] interrupt/alarm could caused a crash
> BA144- [mpi] relinking empty t_LIST caused a crash
>   145- ispower(t_POL) didn't work in small characteristic [#1779]; make it work
>        over finite fields
> BA146- my(s=1,a=0);forstep(i=1,20,s,s++;a+=i);a -> wrong result
> KR147- gphelp -detex: accented letters counted as 1 char for line splitting
>        but rendered as 2
>   148- sqrt(0) -> loss of accuracy (sqrtn was correct)
>   149- nfgaloisconj(t_POL T) was unnecessary slow when large divisors
>        of disc(T) were internally detected (and subsequently ignored)
> BA150- elltatepairing could return wrong results [#1784]
>   151- padicappr(x^3+1,-2+O(2^5)) -> SEGV [mod a root mod p] [#1793]
>   152- K = bnrinit(bnfinit(y^2-5),[1,[1,1]]); bnrdisc(K) -> wrong [#1804]
>   153- ellztopoint(ellinit([-1,0]), I) -> wrong result [#1800]
>        Potentially affected all elliptic functions (ellwp,ellzeta,ellsigma)
>        at real or pure imaginary arguments.
>   154- gamma(2+x) did not start with an exact 1, unlike gamma(1+x).
>        lngamma(2+x) didn't have valuation 1
>   155- gamma(t_INT+x) at large accuracy and seriesprecision was very slow,
>        even for small t_INTs (same for lngamma and psi). E.g. at \p1000
>        gamma(1000+x+O(x^100))
>   156- a=Mod(y,y^2+1); Mod(a, x^2-2) == a returned 0 [#1806]
>   157- x \/ y did not conform to documentation when either x or y was a
>        t_REAL. E.g. 28/10 \/ 1 == 3 but 2.8 \/ 1 == 2. Now both return 3 [#1811]
> BA158- digits(N,B) with 31/63 bit B could return wrong result
> BA159- [pthread] parallel GP could leak memory
>   160- ellinit(E, O(p^n)) was slightly incorrect for E / Q [ started by
>        approximating exact equation mod p^something instead of keeping
>        everything exact ]
>   161- ellinit(E, O(2^n)) was hardly supported, e.g.
>        ellinit("14a1",O(2^5)).tate => precision too low in p-adic AGM.
> BA162- polrootsmod(x^3-1, not a prime) -> SEGV (BIB)
> BA163- [windows] MPQS could fail due to temporary files
>   164- matsnf([27, 0; 0, 3; 1, 1; 0, 0],1+4) -> SEGV
>   165- gcd(Mod(1,2)*x+Mod(1,2), Mod(0,2)) -> Mod(1,2)
>   166- qfperfection() only allowed matrices of small norm [#1719]
>   167- wrong formula for poldisc when characteristic divides degree [#1831]
>   168- wrong result for poldisc(ZX) in huge degree [#1830]
>   169- missing typechecks in ellheight() [SEGV on BIB]
>   170- ellminimalmodel() didn't use a coprime bases so that it
>        was very slow for [c4,c6] = [p^5*q, p^6*q] for huge p and q
> BP171- ellpointtoz(E / Qp) was totally wrong [#1833]
>   172- genus2red(177*x^6+126*x^5-63*x^4+72*x+84) -> bug in labelm3 [#1826]
>   173- normalize genus2red stable reduction output: a type K1-K2-r now
>        guarantees K1 <= K2 (before both K1-K2-r and K2-K1-r could occur)
>   174- gmulsg(0, 1+O(x)) -> O(x^0) instead of t_INT 0 as in gmul(gen_0, ...)
>
>   Added
>     1- add optional argument to sumdigits to specify the base
>     2- [libpari] bits_to_int,bits_to_u,binary_zv,binary_2k,binary_2k_nv
> BA  3- [GP] support for variadic GP functions (f(v[..])=expr)
>     4- nfeltval(K, x, pr, &y) now takes an optional 4th argument, containing
>        the part of x coprime to pr.
> BA  5- [libpari] New functions family RgXn: new functions RgXnV_red_shallow,
>        RgXn_powers, RgX_RgXnV_eval, RgX_RgXn_eval, RgXn_reverse, RgXn_inv,
>        RgXn_exp
> BA  6- [libpari] New functions Flv_inv
> BA  7- [libpari] New functions Flx_Flv_eval, Flv_Flm_polint,
>                                FpX_FpV_eval, FpV_FpM_polint
> WH  8- [libpari] New low-level functions get_Fl_inv, remll_pre
> BA  9- [libpari] New low-level functions Fl_sqr_pre, Fl_mul_pre, remlll_pre,
>        Fl_powu_pre, Fl_sqrt_pre, divll_pre, random_Fle_pre
>    10- [TeX documentation] new primitive \url (verbatim arg)
>    11- [libpari] New functions Fq_log, gener_Fq_local
> BA 12- GP functions bnrisgalois, bnrgaloismatrix, bnrgaloisapply
> LGr13- GP function polrootsreal
>    14- GP constant "oo" (for +/- infinity)
>    15- [libpari] New functions mkoo, mkmoo, inf_get_sign
>    16- [libpari] New functions ellbasechar, ec_f_evalx, ec_dfdx_evalQ,
>    ec_dfdy_evalQ, ec_2divpol_evalx, ec_half_deriv_2divpol_evalx, ec_h_evalx,
>    ec_dmFdy_evalQ, ec_bmodel
> HIL17- GP functions ellisogeny, ellisogenyapply
>    18- [libpari] New function RgX_coeff
> BA 19- [libpari] New functions Fl_halve, Fp_halve, Flx_halve, Fq_halve
> BA 20- [libpari] New functions vecsmallpermute, vec_append
>    21- GP functions qfsolve, qfparam [ adapted from Denis Simon's qfsolve.gp ]
>    22- [libpari] New function ZM_transmul
>    23- allow elliptic curves over number fields: ellinit([a1,...,a5], nf)
>    24- [libpari] ZX_sturm, ZX_sturmpart, RgX_sturmpart
>    25- [libpari] RgXQV_RgXQ_mul
>    26- thue / thueinit now also support (powers of) imaginary quadratic equations
> BA 27- [libpari] ZpX_ZpXQ_liftroot, ZpX_ZpXQ_liftroot_ea
>    28- [libpari] fuse_Z_factor
>    29- ellformalw, ellformalpoint, ellformaldifferential,
>        ellformallog, ellformalexp, ellnonsingularmultiple, ellpadicheight,
>        ellpadicheightmatrix, ellpadics2, ellpadiclog
> BA 30- [libpari] functions FpX_powu, FpX_digits, FpX_fromdigits,
>                  FpXQX_powu, FpXQX_digits, FpXQX_fromdigits, FqX_powu
> BA 31- GP functions ellpadicfrobenius, hyperellpadicfrobenius, hyperellcharpoly
>    32- [libpari] function RgX_normalize
> BA 33- much faster matfrobenius/minpoly(t_MAT)
> BA 34- prototype codes U and u for ulong
>    35- allow testing for BITS_IN_LONG in gprc
>    36- GP functions msinit, ellpadicL
> BA 37- [mingw] support for the alarm GP function
> BA 38- [libpari] functions Fl_sqrtl, Fl_sqrtl_pre
>    39- [libpari] function ZV_allpnqn
>    40- [libpari] function Qevproj_init, Qevproj_apply, Qevproj_apply_vecei
>    41- [libpari] functions G_ZGC_mul, G_ZG_mul, ZGC_G_mul, ZGC_Z_mul, ZG_G_mul,
>        ZG_Z_mul, ZG_add, ZG_mul, ZG_neg, ZG_normalize, ZG_sub,
>        ZGC_G_mul_inplace, ZGCs_add
>    42- [libpari] function kroui
> BA 43- GP function powers and libpari function gpowers
>    44- flag LLL_COMPATIBLE for LLL routines [ use 64-bit compatible accuracies
>        only ]
> BA 45- [libpari] functions FpX_Frobenius, FpX_matFrobenius, Flx_Frobenius,
>        Flx_matFrobenius, ZpX_Frobenius, F2x_Frobenius, F2x_matFrobenius
>    46- [libpari] function ser_isexactzero
> BA 47- [libpari] functions ZV_chinese, Z_ZV_mod, Z_nv_mod, nmV_chinese_center
> BA 48- GP function fromdigits
> BA 49- [libpari] functions Zp_sqrt, ZpXQ_sqrt
>    50- GP functions mscuspidal, mseisenstein, msnew, mssplit, msqexpansion,
>        mshecke, ellmsinit, msatkinlehner, msstar, mseval, mspathgens, mspathlog,
>        msissymbol, msfromcusp, msfromell
> BA 51- GP declaration localprec(), localbitprec()
> HIL52- [libpari] functions Fl_powers_pre, Fl_ellj_pre, Fl_elldisc_pre,
>                            Fl_elltwist_disc
> BA 53- [libpari] functions Fl_powers, Fp_powers, Fl_ellj, Fl_elldisc,
>                            Fl_ellj_to_a4a6, Flxq_ellj_to_a4a6
> BA 54- [libpari] functions FpXQX_div_by_X_x, FqX_div_by_X_x
> HIL55- [libpari] function Flx_oneroot_split, zxX_to_FlxX, RgXY_degreex
> BA 56- [libpari] functions Flv_inv_pre, Flv_inv_inplace, Flv_inv_pre_inplace
> HIL57- GP function ellissupersingular
> HIL58- [libpari] functions Fp_elljissupersingular, FpXQ_elljissupersingular
> BA 59- [libpari] functions umodsu, zx_to_Flx, corediscs
>    60- GP function qfbredsl2
>    61- [libpari] functions ell_is_integral, ellintegralmodel, ellQ_get_CM,
>    ellorder_Q, ellap_CM_fast, point_to_a4a6, point_to_a4a6, Fl_elltrace_CM,
>    Fle_changepoint, Fle_changepointinv, Fle_log
>    62- allow elltors and ellorder for E/K number field
>    63- GP function ellxn, ellisdivisible
> HIL64- [libpari] function family Flj_*
>    65- [libpari] idealprimedec_limit_f, idealprimedec_limit_norm
>    66- [libpari] modpr_get_p, modpr_get_T, modpr_get_pr
>    67- GP function nfsplitting
> HIL68- [libpari] functions Flv_dotproduct_pre, Flx_eval_pre,
>        Flx_eval_powers_pre, FlxY_eval_powers_pre, FlxY_evalx_powers_pre
> HIL69- GP functions polclass, polmodular
> BA 70- ellcard over fields of medium characteristic (SEA, Kedlaya, Satoh)
>    71- GP functions varhigher() / varlower() / variables()
> BA 72- GP function self() (for defining recursive anonymous functions)
> BA 73- GP function fold()
>    74- [libpari] hash_create_ulong, hash_create_str, hash_select,
>        hash_remove_select, hash_keys, hash_values
>    75- allow serlaplace(t_POL)
>    76- GP function ispseudoprimepower
>    77- [libpari] functions FpM_add, Flm_add, FpM_Fp_mul, RgMrow_zc_mul
>    78- [libpari] function nfembed, nfissquarefree
>    79- new binary flag to polcompositum: assume fields are linearly disjoint
>    80- GP function nfcompositum
> AP 81- [GP] associative and central simple algebra package, functions
>    algabsdim         algdisc           algisramified     algrandom
>    algadd            algdivl           algissemisimple   algrelmultable
>    algalgtobasis     algdivr           algissimple       algsimpledec
>    algaut            alghasse          algissplit        algsplittingdata
>    algb              alghassef         algleftmultable   algsplittingfield
>    algbasis          alghassei         algmul            algsplittingmatrix
>    algbasistoalg     algindex          algmultable       algsqr
>    algcenter         alginit           algneg            algsub
>    algcentralproj    alginv            algnorm           algsubalg
>    algchar           alginvbasis       algpoleval        algtableinit
>    algcharpoly       algisassociative  algpow            algtensor
>    algdecomposition  algiscommutative  algprimesubalg    algtrace
>    algdegree         algisdivision     algquotient       algtype
>    algdim            algisdivl         algradical
>                      algisinv          algramifiedplaces
>    82- [libpari] functions rnf_get_alpha, rnf_get_idealdisc, rnf_get_k
>    83- [libpari] functions ZC_is_ei, RgC_is_ei, ZM_Z_div, ZMV_to_FlmV, checkal
>    84- [libpari] functions cbrtr, cbrtr_abs
>    85- nfinit(rnf) now returns an nf structure associated to rnf.polabs
>    86- idealprimedec now allows an optional 3rd argument, to limit f(P/p)
>    87- [libpari] cb_pari_err_handle callback
>    88- [libpari] function nf_get_ramified_primes
>    89- Configure --with-runtime-perl option
> PB 90- Faster matrix multiplication over finite fields
>    91- allow content(t_VECSMALL)
>    92- [libpari] ZX_div_by_X_1
> HC 93- intnumgauss / intnumgaussinit: Gauss-Legendre quadrature
> LGr94- GP function sinc
> HC 95- contfracinit / contfraceval functions
> HC 96- limitnum / asympnum
> BA 97- [libpari] functions FlxV_prod, RgV_prod
> BA 98- GP function ellfromeqn
> HC 99- gammamellininv, gammamellininvasymp, gammamellininvinit
> BA 100- [libpari] RgX_Rg_eval_bk, RgX_RgV_eval, RgXV_RgV_eval
>    101- [libpari] RgX_cxeval
> HC 102- GP function zetamult
> PB 103- ZM_mul: Add Strassen-Winograd algorithm
>    104- GP functions sumnummonien/sumnummonieninit
>    105- [libpari] RgM_gram_schmidt, RgM_Babai
> BA 106- GP function cotanh
>    107- support sign(t_QUAD with positive discriminant)
>    108- comparison operators (<,>,<=,>=): support t_QUAD with *same* positive
>         discriminant
> BA 109- [libpari] Flv_prod, Flv_prod_pre
> BA 110- [libpari] Flv_neg, Flv_neg_inplace
> ED 111- mingw64 support
> BA 112- [parallel] new GP function parforvec
> BA 113- [libpari] Fl_addmul_pre, Fl_addmulmul_pre
> BA 114- [libpari] Fl_eltwist, Fp_elltwist, FpXQ_elltwist, Flxq_elltwist,
>                   F2xq_elltwist
> BA 115- GP functions elltwist, ellminimaltwist
>    116- [libpari] omegau, bigomegau
> VB 117- GP support for 0xffff and 0b1111 (input t_INT in binary or hex notation)
> BA 118- GP functions ellisomat
> HC 119- GP function ramanujantau
> PB 120- Speed up {Flx,FpX,FpXQX}_divrem_basecase for modulus of the form
>         x^n+O(x^m) with m small
> HC 121- GP function solvestep
>    122- [GP] New lfun family of functions
>    lfun                lfundiv             lfunmfspec
>    lfunabelianrelinit  lfunetaquo          lfunmul             lfuntheta
>    lfunan              lfunhardy           lfunorderzero       lfunthetainit
>    lfuncheckfeq        lfuninit            lfunqf              lfunzeros
>    lfunconductor       lfunlambda          lfunrootres         lfunartin
>    lfuncreate
>    123- [libpari] nfchecksigns, idealchineseinit
> JD 124- [libpari] gp_read_str_multiline
> BA 125- [libpari] Flx_nbfact_Frobenius, FpX_nbfact_Frobenius
>    126- extend idealchinese() to impose sign conditions at specified real
>         places [#1501]
>    127- [libpari] qfb_equal1, qfi_order, qfi_log, qfi_Shanks
>    128- [libpari] RgV_kill0
> BA 129- factorcantor: use Shoup-Kaltofen algorithm (much faster)
> BA 130- [libpari] FpX_dotproduct, Flx_dotproduct
> JK 131- FpXQ_minpoly/Flxq_minpoly: use Shoup algorithm (much faster), and do
>         not assume modulus is irreducible
> BA 132- [libpari] idealramfrobenius, idealfrobenius_aut, nfgaloispermtobasis
>    133- Allow ??lfun, ??Lmath, etc. [#1753]
>    134- [libpari] cyc_normalize, char_normalize, char_check, char_rootof1,
>         char_rootof1_u, bnrchar_primitive, bnrconductor_i
>    135- GP functions charker, bnrchar
>    136- bnrconductor(bnr, chi) as a shortcut for bnrconductor(bnr, Ker chi);
>         same for bnrisconductor, bnrdisc and bnrclassno
>    137- [libpari] real_1_bit(), grootsof1()
> PB 138- [libpari] Flm_sub, FpM_sub
> BA 138- [libpari] get_FpXQX_mod, get_FpXQX_degree, get_FpXQX_var,
>         FpXQX_get_red, FqX_get_red, random_FpXQX
> BA 139- [libpari] get_FlxqX_mod, get_FlxqX_degree, get_FlxqX_var,
>         FlxqX_get_red, random_FlxqX
> BA 140- Prototype code 'b' and default 'realbitprecision'
>    141- \pb shortcut [ manipulate realbitprecision ]
> BA 142- [GP] Map, mapget, mapput, mapisdefined, mapdelete
> BA 143- [GP] bitprecision
> BA 143- [arm64] add aarch64 assembly kernel
>    144- [libpari] ZV_snf_group, ZV_snfall
>    145- [libpari] znstar0 with Idealstar semantic; could be made available under
>         GP as default znstar, but current znstar/idealstar have incompatible
>         defaults. Called by idealstar(,N).
>    146- [GP] znconreychar, znconreyexp, znconreylog, znconreyconductor,
>         charorder, charconj
> BA 147- [GP] call (for calling closures).
>    148- [GP] optional flag to forell [ loop over isogeny classes ]
>    149- lfunthetacost, lfuncost
> SCh150- [mingw] timer: support for user time
> JD 151- [libpari] pari_completion interface for readline
> SCh152- [mingw+pthread]: default nbthreads support
>    153- teichmuller([p,n]) to cache all value at i + O(p^n), 1 <= i < p
>    154- optional argument 'tab' to teichmuller(x)
>    155- [GP] function chareval, charmul, chardiv, zncharinduce, zncharisodd
>    156- [libpari] Flm_intersect
>    157- [libpari] ggamma1m1
>    158- allow ispower(t_POLMOD representing a finite field element)
>    159- [libpari] Fq_ispower, FqX_ispower, RgX_deflate_order, Fq_to_FF,
>         FqX_to_FFX
>    160- [libpari] Z2_sqrt, divisorsu_fact, usumdiv_fact, usumdivk_fact
>    161- gphelp -detex: new flag -utf8 to allow utf-8 encoding in output, e.g.
>         render \'{e} as &eacute; (the actual eight-bit char) instead of 'e
>    162- GP function msfromhecke, msgetlevel, msgetweight, msgetsign
> BA 163- qfisominit: allow to pass the matrix of minimal vectors [#1656]
>    164- [libpari] GENtostr_raw
> BA 165- [libpari] FlxqX_halfgcd, FpXQX_halfgcd
>    166- issquare(t_POLMOD of t_INTMOD) assuming a finite field
>    167- RgXn_powu, RgXn_powu_i
>    168- [libpari] is_real_t, R_abs, R_abs_shallow
> BA 169- [libpari] F2xX, F2xqX, F2xqXQ family functions
>    170- GP functions rnfidealprimedec, rnfidealfactor
> BA 171- [libpari] get_FpX_algebra, get_FpXQ_algebra,  get_FpXQX_algebra,
>                   get_FlxqXQ_algebra, get_FpXQXQ_algebra, get_Rg_algebra
>    172- E/Qp: Added Mazur-Tate-Teitelbaum's L invariant to E.tate
> BA 173- [libpari] ZpXQ_div, ZpXQX_divrem, ZpXQX_digits
>    174- [libpari] ZX_deflate_max, ZX_deflate_order
>    175- [libpari] idealinv_HNF, idealinv_HNF_Z
>    176- [libpari] QM_charpoly_ZX_bound
> BA 177- libpari support for low-res plot()
>    178- GP function serprec
>    179- ellap(E,p), ellcard(E,p) for E/K number field, and p maximal ideal
>    180- [libpari] function sertoser
>    181- ellan(E, n) for E/K number field
>    182- [libpari] function gisexactzero
> BA 183- GP function ellsea
>    183- [libpari] nfsub, Rg_RgC_sub, Rg_RgC_sub, Z_ZC_sub
>    184- [libpari] zkchinese, zkchinese1, zkchineseinit
>    185- [libpari] vecsmall_reverse
>    186- [libpari] Z_ppio, Z_ppgle, Z_cba
>    187- ellminimalmodel over number fields
>    188- [libpari] FpX_factor_squarefree, Flx_factor_squarefree
>    189- [libpari] checknf_i, checkbnf_i, checkbid_i, checkrnf_i
>
>   Changed
>     1- make log(+/-I) return (+/-)Pi/2*I with gen_0 real part [#1556]
> BA  2- [libpari] rename RgX_mullow -> RgXn_mul, RgX_sqrlow -> RgXn_sqr,
>     RgX_modXn_eval -> RgXn_eval, RgX_modXn_shallow-> RgXn_red_shallow
>     3- change rnfnormgroup to return [;] instead of raising an error whenever
>     it detects a problem (modulus not a multiple of the conductor, non-abelian
>     extension...): this is a BIB with undefined result, but returning a
>     sentinel is more useful *if* we notice it.
>     4- [gp] uniformize errors from the % history operator (SYNTAX->MISC) [#1553]
>     5- t_STR used to compare as larger than any real number via < or >
>        operators. Such a comparison now raises an exception.
>     6- valuation(0,p), nfeltval(nf,0,pr), idealval(nf,0) now all return +oo
>        poldegree(0) now returns -oo
> BA  7- rootpadicfast renamed ZpX_roots
>     8- nfinit: switch from sturm() to ZX_sturm() [Uspensky], and from polroots
>        to polrootsreal (totally real fields). polsturm() now uses Uspensky in
>        most cases.
>     9- polsturm interface change
>          - polsturm(T, a, b) is still supported but deprecated, use
>            polsturm(T, [a,b])
>          - polsturm(T, a, b) used to return the number of roots in ]a,b],
>            we now use the closed interval [a,b]: more intuitive given the new
>            syntax, and compatible with polrootsreal()
> BA 10- [libpari] mkintn: handles arguments as 32bit unsigned int
>    11- nfdisc, nfbasis: no longer support the old (T,flag,fa) arguments.
>        Use the generic [T,listP] syntax (see 2.6.0-C105)
>    12- factorpadic: no longer support the deprecated (no-op) 'flag' argument
>    13- thue() sort solutions lexicographically
>    14- thueinit tnf format: always include a bnf (also when r1=0), to allow
>        checking for norm equation solutions first: e.g. thue(x^4+1,7*10^80)
>        becomes instantaneous instead of overflowing
> BA 15- Flx_pow renamed to Flx_powu
>    16- optional flag to ellheight is gone (useless)
>    17- ellbil(E,P,Q) is now deprecated, use ellheight(E,P,Q)
>    18- [libpari] rename ghell->ellheight, mathell->ellheightmatrix
> BA 19- Rg_to_RgV renamed to Rg_to_RgC, RgX_to_RgV renamed to RgX_to_RgC
>    20- ellL1(e, r): make r optional (default value = 0)
> BA 21- powruvec is replaced by powersr
>    22- [libpari] merge_factor no longer keeps entries with exponent 0
> Pmo23- More robust and much faster ellL1 and ellanalyticrank. The condition
>        ord(L_E,s=1) <= r in ellL1(E,r) is no longer necessary.
>    24- renamed ZV_gcdext -> ZV_extgcd for consistency with other gcdext methods
> BA 25- setrand now return a (huge) integer instead of a vecsmall
>    26- unify 32/64 bit random generators. Probabilistic algorithm should now
>        behave identically on all architecture, provided they do not involve
>        the floating point kernel
>    28- unify 32/64 bit tests
>    29- move extern(), externstr(), readstr() and system() to the generic
>        part of GP language (was gp-specific). This allows to use them
>        in parallel mode and under gp2c [#1593]
>    30- made cmprr, cmpri, equalrr consistent with == semantic. We now have,
>        e.g., 0e1==1.0 and (0e1 < 1) = 0 (since 1-0e1 evaluates to 0e1)
>    31- [libpari] comment out function names obsoleted during the 2.3.* cycle
>        (2007). See PARI_OLD_NAMES.
>    32- default 'strictmatch' has been obsoleted. It is now a no-op.
>    33- default 'compatible' has been obsoleted. It is now a no-op.
>    34- zeta(odd integer): use Borwein's "sumalt" algorithm (10 times faster
>        than previous at \p1000)
>    35- elltors flags are now deprecated (and ignored, removed corresponding
>        code)
>    36- add optional flag to nfhnf / nfsnf: return transformation matrices
>    37- nfroots/nffactor: factor polynomials in Q[X] over Q first
> BA 38- much faster polresultant over Z
>    39- GP and libpari polynomial variables of arbitrary priority can now be
>        created: 'x' is no longer guaranteed to have maximal priority,
>        nor MAXVARN to have minimal priority.
>    40- GP: polynomial variable 'y' is now always defined on startup,
>        with priority lower than 'x'
>    41- Allow ffgen([p,f]) in addition to ffgen(p^f) and ffgen(T*Mod(1,p))
>    42- thue() needed to compute to huge accuracies when regulator was large
>        E.g. t=thueinit(15*x^3+8*x^2-95*x+24,1); thue(t,8)
>    43- rnf structures may now contain a full absolute nf struct ('nfabs')
>    44- matkerint: replace underlying LLL algorithm by mathnf
>        Simple bench: M=matrix(50,55,i,j,random(10^5)); \\ 200 times faster
>    45- allow t_VECSMALL vector exponents in gen_factorback
>    47- [libpari] rename 'define' PI -> M_PI and use proper constant
>    48- no longer print 0 t_POLMOD as "0", bug e.g. Mod(0,x). Uniformize code
>        and behaviour with t_INTMOD.
>    49- warn when coercing quotient rings when 'debug' non-zero
>       ? \g1
>       ? Mod(1,2)+Mod(1,3)
>         *** _+_: Warning: coercing quotient rings; moduli 2 and 3 -> 1.
>    50- content([]) -> 0 [ was 1 ]
>    51- [] / 0 => div. by 0. Now returns [] (as [] \ 0 already did)
> LGr52- use GRH-guaranteed bounds in bnfinit for residue estimate
>    53- Configure: avoid inserting unnecessary -L arguments in link line
>    54- genus2red: change syntax. Allow either genus2red(P) or genus2red([P,Q])
>        instead of mandatory Q (was: genus2red(Q,P) with Q almost always 0).
>        Allow uniformization with hyperellcharpoly
>    55- old functions from gp-1.39.15 no longer loaded into an "entree" table,
>        no longer complete specially "whatnow" arguments; remove compat.c and
>        most of gp_init.c
> BA 56- Rename row_Flm -> Flm_row, row_zm -> zm_row
>    57- rewrote intnum / intnuminit routines
>    58- nucomp now takes L = floor(|D|^(1/4)) as a 3rd argument. Former
>        nucomp(x,n) is nucomp(x,n,NULL).
> BA 59- divide_conquer_assoc renamed to gen_product
>    60- sumnum algorithm (replace Abel-Plana by Euler-Mac Laurin). Changed
>        the interface !
> BA 61- [libpari] concat, concat1 renamed to gconcat, gconcat1
>    62- rnfconductor now returns [cond, bnr, H] instead of [cond, bnr.clgp, H]
>    63- nfrootsof1(), more stringent ramification tests: looking
>        for a subfield Q(zeta_p^k) is now faster.
>    64- intnumromb to use realbitprecision
>    65- idealstar / ideallog: allow omitting 'nf' argument (for nf = Q; use
>        znstar and znlog internally)
>    66- improved p-adic log at high accuracy (O(sqrt(padicprec)) algorithm
>        instead of O(padicprec))
>    67- allow genus2red to handle (rational) non integral models
> KR 68- new version of misc/xgp
> BA 69- rename Flc_Fl_mul -> Flv_Fl_mul, Flc_Fl_div -> Flv_Fl_div,
>        RgC_to_Flc to RgV_to_Flv, F2c_to_Flc to F2v_to_Flv
>    70- rename leading_term -> leading_coeff, constant_term -> constant_coeff
>    71- improve gamma(a+O(x))
> BA 72- Z_to_Flx now takes a shifted variable number, as Fl_to_Flx.
> BA 73- improve hash_GEN to reduce # of collisions (change glue)
>    74- added explicit ways to attach an absolute nf to a rnf structure,
>        allowing rnf functions to return objects in standard notation (e.g.
>        ideals in HNF instead of as a vector of t_POLMOD generators).
>        Add optional flag to rnfeltabstorel, rnfeltdown, rnfeltup,
>        rnfidealreltoabs, rnfinit
> BA 75- rename FlxqX_pow to FlxqX_powu
>    76- polredabs([T,listP]) no longer returns 0 if the attached order cannot
>        be proven to be maximal: it computes the expected canonical polynomial
>        in all cases, which can be very slow. Always use polredbest() if you
>        don't require a canonical output.
>    77- polredabs(T) now internally uses the polredabs([T,listP]) strategy,
>        making it much faster in favourable cases, while still always returning
>        a canonical defining polynomial.
>    78- precision(0), bitprecision(0), padicprec(0,p) now all return +oo
>        under GP [ used to return LONG_MAX ]
>    79- meaning of precision(x, n) no longer depends on the type of x: it now
>        always refers to floating point precision. Before the change:
>        precision([O(2),O(3),O(x)], 10) -> [O(2^10),O(3^10),O(x^10)]
>    80- infinite slopes of newtonpoly replaced by "+oo" (instead of 2^63-1)
>    81- rename anell -> ellan, anellsmall -> ellanQ_zv
> BA 82- Fp_ellcard_SEA/Fq_ellcard_SEA meaning of flag has changed.
>    83- renamed absi_cmp -> abscmpii, absr_cmp -> abscmprr,
>        absi_equal -> absequalii, absi_factor -> absZ_factor, absi_factor_limit
>        -> absZ_factor_limit, equaliu -> absequaliu, equalui -> absequalui,
>       cmpiu -> abscmpiu, cmpui -> abscmpui
>
> Removed
>    1- deprecated functions nfbasis0, nfdisc0, factorpadic0
>    2- deprecated function manage_var
>    3- useless function intnuminitgen (not very useful and impossible to use
>       reliably together with intnum with boundary conditions)
>    4- useless function intnumstep: instead of intnum(a,b, intnumstep()+m),
>       use intnum(a,b,m).
>    5- partially implemented functions intfouriercos / intfouriersin /
>       intfourierexp / intlaplaceinv / intmellininv / intmellinvshort: use
>       intnum (possibly intfuncinit). Make sure to indicate oscillating behaviour
>       when function decrease slowly at oo
>    6- optional flag to intfuncinit
> BA 7- divide_conquer_prod: use gen_product instead
>    8- useless function sumnumalt
>    9- badly implemented functions zetakinit / zetak: the interface did not
>       make sense (it is impossible to initialize for Dedekind zeta without
>       specifying a domain where the function is to be evaluated). Closest
>       equivalent to zetakinit:
>         L = lfuninit(x^2+1, [c, w, h]);
>       to compute zeta_Q(i)(s) for |Re(s - c)| < w, |Im(s)| < h. Then
>         lfun(L, s)
>       as an analog to zetak(). Or directly lfun(x^2+1, s) if a single value
>       is needed. [#368, #1647]
> BA10- [libpari] FpXQX_rem_Barrett, FpXQX_divrem_Barrett: use FpXQX_get_red
> BA11- [libpari] FlxqX_rem_Barrett: use FlxqX_get_red
> BA12- [libpari] RgX_RgM_eval_col
>