Karim Belabas on Mon, 03 Jun 2019 23:21:53 +0200


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

pari-2.12.0 released ! [ALPHA]


Dear PARI lovers,

I would like to announce the release of pari-2.12.0-ALPHA !

Sources and binaries for Windows or MacOS can be obtained through the address
  http://pari.math.u-bordeaux.fr/download.html

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.12.0-ALPHA: see below for COMPATIBILITY ISSUES.
=================================

[The GP language]
  - support call by reference in GP functions: f(~L,x) = L[1] = x;
    This allows to modify the contents of a vector / list argument and avoids
    unnecessary copies of arguments
    For clarity, built-in functions handling lists/maps should now use the ~
    prefix to indicate mutable containers, e.g. listput(~L,x), mapput(~M,x)
  - new GP functions export, unexport, exportall, unexportall simplify
    writing code for parallel execution (allowing simple access to "global"
    variable in parallel threads)
  - new GP functions getlocalprec, getlocalbitprec: to replace obscure
    idiomatic constructs such as bitprecision(1.)
  - new GP functions to simplify string handling: strsplit (split into a
    vector of strings with respect to a given separator), strjoin (join a
    vector of strings using a given separator), strtime (format a 'time')
  - new GP function arity, returns the number of arguments of a function
  - improve extended help: ??? output now include double quotes when needed
    (e.g. ???conductor); support all symbolic operators using the _
    placeholder syntax: ?? _+_, ?? !_, ?? _+=_, ?? _++, etc.
  - natural extensions to the syntax of t_LISTS: allow L[a..b] and L[^i];
    allow listinsert(L, x, n) for n > #L, as in listput
  - allow forsquarefree(n = a, b) with a*b < 0
  - allow subst(e, x, vector v) for vector(subst(e, x, v[i]))

[Transcendental functions]
  - new GP function hypergeom() for general hypergeometric functions;
    airy() for Airy Ai and Bi functions. As a consequence, hyperu(), the
    U-confluent hypergeometric function is now implemented for arbitrary
    complex parameters.
  - new GP functions ellK and ellE (complete elliptic integrals of the first
    and second kind)
  - new GP function dirpowers(n,x) = [1^x, ..., n^x]
  - improve gamma-related functions:
    . n!, factorial(n), lngamma(n), psi(n) for integral n 
    . gamma and lngamma(t_FRAC) use direct formula when denom | 24
    . lngamma and psi near 1 [ cache values of zeta(odd integers) ]
  - fast algorithm for zeta([a + b*n | n<-[0..N]]). Compare:
    ? \p2000
    ? zeta(vector(1000,i,i+1));
    time = 787 ms.
    ? vector(1000,i,zeta(1+i));
    time = 3,334 ms.
    Also fix tuning problems for zeta(small even integer), slow at huge
    accuracy.
  - besseli, besselj, besselk, besseln(nu, z), eint1(z): now use asymptotic
    expansion for large z
  - fix cancellation in acosh / asinh for huge t_COMPLEX and in cos(z) and
    sin(z) when Im(z) is nonzero but tiny
  - fix bugs in zetahurwitz (imprecise n-th derivative for large n)

[Numerical summation and integration]
  - limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
    which allows to handle efficiently sums, recursions, continued
    fractions, etc.
  - new GP function derivn for (formal or numerical) n-th derivative
  - faster derivnum; f'...' (n quotes) now always uses derivnum which is
    about 2^n/n faster, and more accurate.
  - fix numerical derivative of functions with optional argument: e.g.,
    f(x, y = 1) = x*y;
    f'(1) used to return 0 [ instead of 1 ].
  - improve intnumgaussinit (use direct Newton instead of calling polrootsreal)

[Elementary Number Theory]
  - rewrite the Bernoulli number cache using zeta(2n) = (*) B_{2n}
    and power recycling for zeta(2n) + additive Clausen-von Staudt:
    simpler and orders of magnitude faster than the old iteration. We now
    always store Bernoulli numbers in rational form. The GP function
    bernvec() is no longer obsolete (now faster than computing Bernoulli
    numbers individually).
  - qfbsolve(Q,n) now supports arbitrary integer n (was limited to primes)
    and return all solutions modulo units.
  - improve the poldiscfactors() and prime() functions

[Polynomials]
  - new GP function pollaguerre for Laguerre polynomials. Add an
    optional flag to pollegendre and polhermite to return P_{n-1}(a) and P_n(a)
  - polinterpolate over Z/pZ is now asymptotically fast

[Linear Algebra]
  - generic fast linear algebra using CUP decomposition
  - improve linear systems over Q [treat contents sensibly]
  - fix inefficiency in LLL (not present in original fplll code)

[Elliptic curves]
  - make ellheight(E) return the Faltings height of E (over Q or a number field)
    make ellheight(E, torsion point) return an exact 0
  - support for non-integral models in ellratpoints and hyperellratpoints

[L-functions and Modular Forms]
  - lfun now allows non-integral weights; in particular, lfunqf is no longer
    restricted to even dimensions.
  - mffromlfun now supports forms of half-integral weight, e.g. from lfunqf.
  - lfunmfspec is now implmented in all integral weights
  - new GP function mfgaloisprojrep (projective Artin representation attached
    to a modular form of weight 1 by Deligne-Serre)

[Number Fields, Local Fields, Finite Fields]
  - new GP function bnrclassfield, generalizing rnfkummer (which only
    supported relative extensions of prime degree)
  - new GP function idealdown(nf,A) to return A \cap Q
  - new GP function idealismaximal
  - allow polynomials with non-integral coefficients in rnfdisc and
    rnfconductor
  - nfbasis now accepts an optional argument &dK to recover the field
    discriminant
  - rnfinit(nf, [T,B]) for orders that are maximal at a certain set of primes
    only; allow B a list of primes and maximal ideals (same for rnfbasis,
    rnfdisc, rnfconductor, rnfpseudobasis)
  - new GP function nfdiscfactors to return the field discriminant in
    factored form
  - new GP function polteichmuller to define nice models of p-adic extensions
    (see ??polteichmuller)
  - new GP function ffmaprel(m, t) to express the finite field element t as
    an algebraic element over the codomain of the map m; this allows for
    instance to compute the relative minimal polynomial, trace and norm of t

[Windows-specific]
  - no longer crash on deep recursion [ (dive(n) = dive(n+1)); dive(0) ]
  - support for install() [ was only working in the dynamic binary ]

COMPATIBILITY ISSUES BETWEEN 2.11.* and 2.12.*
============================================

0) Obsoleted functions and interfaces:
  - removed member functions .futu and .tufu [deprecated since 2.2]
  - matsnf: remove obsolete binary flag '2' [make it a no no-op as in mathnf]
  - inline / uninline are now obsolete, use export/unexport
  - renamed GP functions Strchr -> strchr, Strexpand -> strexpand,
    Strprintf -> strprintf, Strtex -> strtex
  - renamed GP function besseln -> bessely
  - poldisc(t_COMPLEX) now raises an exception (used to return -4)

1) Output changes:
  - bnf.fu now returns 0 when bnf does not contain fundamental units [used to
    raise an exception]
  - qfbsolve now returns a vector of all solutions modulo units [was a single
    solution]
  - mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
    cyclotomic polynomials defining the field of values of CHI
  - fix compatibility issue between coefficients of a modular form f and
    values of corresponding Dirichlet character via znchar and chareval
    [used different cyclotomic polynomial to define the same cyclotomic field
    when order(chi) = 2 mod 4].
  - polinterpolate(X,Y,t,&e): e is now more precisely defined and the
    error estimate is given as a binary exponent; compared to the value
    dy returned up to this change, we have e = exponent(dy).
  - x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
  - GP timer and ## now also display the realtime when nbthreads is not 1

2) Input changes:
  - the argument of a GP user member function is now a reference and can be
    modified.
  - lfunconductor(L, [a,b]) is no longer supported to look for conductor in
    interval [a,b]; implement lfunconductor(L, list of potential N) instead
  - limitnum / asympnum: removed the useless optional parameter 'muli/k'
    [now implicitly set to 1, not to 20]; to replicate the old behavior
    extrapolate u(muli*n) .
  - CAVEAT: nfbasis documentation was incorrect: it is not guaranteed that
    nfbasis([T, listP]) returns the maximal order even if listP contains all
    prime divisors of the field discriminant. See ??nfbasis

-------------------------------------------------------------------------------

P.S. The Changelog 

Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/

Done for version 2.12.0 (released 01/06/2019):
  Fixed
     1- memory leaks due to the use of varhigher/varlower
     2- memory leak on error in plots
     3- memory leak on error in newtoncharpoly
     4- heap-buffer-overflow in init_prefix [readline]
     5- mfsplit(mf,,flag) could return uninitialized objects => SEGV
     6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi)
     7- poldegree(y/x) -> 0 [ instead of -1 ]
     8- sumeulerrat(y/x^2,1) -> junk
HC   9- incgam(-1000.4,2) -> SEGV
    10- mfatkininit(mfinit([366,2]),2) -> precision error
    11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071]
    12- mfbracket: [f,g]_m was multiplied by (-1)^m
    13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient
        precision [#2073/#2074]
    14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower]
    15- possible SEGV in rnfpseudobasis(, [pol,lim])
    16- wrong result in elllog over F_p, p in [2^63,2^64[
        p=13824553909862352061; A=8953655473130154624; B=9775907253961339458;
        P=[6444058885176327583,7963649599850249187];
        E=ellinit([A,B],p); Q=ellmul(E,P,2);
        elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ]
    17- wrong result in mfsymboleval when path extremities are close to real
        axis (cusps were OK) [#2075]
    18- mfcoefs(mfDelta(),0) -> SEGV [#2078]
    19- GC error in lfuncreate(elliptic curve over number field) [#2080]
    20- X11 and Qt graphic engine: pari_close called too soon => crash
    21- pariold.h: mix up with obsoleted  taille / taille2
BA  22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081]
    23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0)
        Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0)
    24- missing typecheck in nfalgtobasis [#2084]
    25- dbllog2(t_COMPLEX of t_FRAC) => junk
    26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083]
    27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error
    28- lfunrootres: avoid oo-loop
    29- mfgaloistype: dihedral forms possibly incorrect for N > 3000
    30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0);
    31- incorrect accuracy in limitnum / asympnum for alpha != 1
    32- missing GC in polint_i
    33- hash_GEN(x) returned different values depending on whether x was a clone
BA  34- [mpi] setting nbthreads in .gprc could lead to crashes.
    35- accuracy too large in derivnum => slowdown
    36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV
    37- stack corruption in addsub_frac
AP  38- segfault in rnfidealup [#2093]
    39- Ser(x,x,0) -> error instead of O(x) [#2092]
    40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels]
    41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV
    42- output from bnfcompress() mistaken for rnf and vice-versa
    43- catastrophic cancellation in acosh / asinh for large t_COMPLEX
    44- zeta(1/2 + I*t) => internal error
    45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny
BA  46- hyperellcharpoly: wrong results over Z/3Z
    47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized
        memory, then ignores result]
    48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should
    49- forcomposite(n=2,4,print(n)) -> empty [#2096]
    50- relative extension of degree 1 was not properly supported in
        rnfidealprimedec and rnfidealup
    51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi
        (resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi')
        [analogously for mfpow, mfdiv, mfbracket]
    52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi)
        [or an extension thereof for eigenforms] but the values obtained
        from znchar(chi) and chareval were incompatible with mfcoefs when
        order(chi) = 2 (mod 4) [same cyclotomic field but different
        cyclotomic polynomial]
FB  53- [Configure] library not found despite --with-readline-lib [#2097]
    54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion
        for large z [#2006]
    55- minpoly(Mod(1,t^2)) -> SEGV [#2102]
    56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive
        characteristic with a few t_INT coefficients ]
    57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points
BA  58- [pthread] parapply could crash
BA  59- ffinvmap(m) could SEGV on bad input
    60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106]
    61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1
    62- zeta''(0): all precision lost [more generally f'...'(n quotes)
        imprecise in the neighbourhood of 0, while derivnum(,n) was OK]
    63- sumdigits(negative number, B) sometimes negative
    64- poldiscfactors(x^0) -> division by 0
    65- factormod(x^3+1,[y^2+1,2]) -> SEGV
    66- factormod(x^3+1,[y^2+1,5]) -> weird error message
    67- besseljh(huge n, z) -> junk
BA  68- [pthread] localbitprec was not exported to threads
BA  69- fix inefficiency in fplll not present in original code
    70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112]
    71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112]
    72- lfun may crash on lfuncreate input with too short an vector [#2118]
BA  73- incorrect use of graphcolors -> SEGV
    74- forcomposite(..., oo, ) was not supported
BA  75- lfunartin with poles: incorrect result
JD  76- factor: significant pointers lost [#2125]
BA  77- matdet/matrank over large fields was inefficient
    78- poldisc(y^2/x + 1, y) -> error [also affects polresultant]
    79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant]
    80- ispower(2, 2^64) -> error
    81- (f(x) = x*'y); f'(1) -> error
BA  82- sqrtn(Mod(3,19),4) -> no error [#2127]
    83- nfhnfmod: wrong result
    84- matdet(mat with t_RFRAC entries): wrong result [#2128]
    85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n
        + imprecise value when n large [#2130]
    86- lfunzeros(f, [0, b]) wasn't allowed
    87- mateigen(): typo causing wrong results when correct results were
        achievable [#2131]
    88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0
    89- eint1(large x > 0) didn't use asymptotic expansion [#2129]
    90- printtex(quadgen(-3,'z)) ==> w
BA  91- [a,b]=a could lead to memory corruption
    92- memory leak in cgetalloc when lg overflows
    93- possible SEGV in padicappr [#2133]
    94- zeta(small even integer) was very slow at large accuracy
    95- core() could destroy its input, if stored in a GP variable
BA  96- (f(x, y = 1) = x*y); f'(1) returned 0
    97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc).
    98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2)
    99- ellmoddegree(ellinit("10890ba6")) -> wrong result
   100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT
   101- random SEGVs in bnfinit with large fundamental units [#2139]
        (due to fundamental units computed via floating point approximations
        rounding to 1 or -1)
   102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140]
   103- mfeval: wrong result when level of form and space didn't match [#2134]
BA 104- nfisincl(x^3+9,x^6+2187): wrong result [#2144]
   105- ispower(27,2^60) -> SEGV [#2145]
BA 106- matsolve(M,vector(n)) could return result of wrong dimension
   107- [Windows] no longer crash on deep recursion [#2105]
   108- factor(Mod(x^3 + x + y^2,2)) -> oo loop [#2148]

  Changed
     1- [libpari] gp_filter return value is now allocated on the stack
        [was undocumented, malloc'ed and resulted in memory leaks]
     2- improved n!, factorial(n), lngamma(n) and psi(n) for integral n
     3- improved bernvec: no longer Obsolete
     4- [libpari] mpbern is now obsolete: use constbern
     5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n})
        and power recycling for zeta(2n) + additive Clausen von Staudt):
        orders of magnitude faster and always store Bernoulli in rational form
BA   6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early'
     7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an
        error)
     8- support ?? _+_ and friends [extended help for specific operators
        instead of redirecting to "GP operators"]
     9- support ?? _op=_ and ?? op=; support ?? _++ and friends
    10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
HC  11- gamma(t_FRAC) and lngamma: use direct formula when denom | 24
    12- serlaplace(scalar) -> return the scalar (understood as a constant
        polynomial) instead of raising an exception [#2082]
    13- implement hyperu for arbitrary complex parameters
    14- extend lex() to allow complex numbers
    15- lfunconductor(L, [a,b]) no longer supported to look for conductor in
        interval [a,b]; implement lfunconductor(L, list of potential N) instead
    16- renamed GP functions Strchr -> strchr (pari_strchr in libpari),
        Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex
    17- [help] move str* functions from "conversions" to "programming" section
BA  18- qfbsolve now returns a vector of solutions.
    19- limitnum / asympnum: remove useless optional parameter 'muli/k'
        [now implicitly set to 1, not to 20]: just extrapolate u(muli*n).
    20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ]
    21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
        cyclotomic polynomials defining the field of values of CHI
    22- inline / uninline are now obsolete, use export/unexport
    23- let localprec(p) accept non integral real p [replace by ceil(p)];
        same for localbitprec.
    24- let precision(x,p) accept non integral real p [replace by ceil(p)];
        same for bitprecision.
    25- besseln is now obsolete, use bessely
    26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific
        commands, not for library use) are now obsolete. The new equivalent
        commands (still not meant for library use) are precision00 and
        bitprecision00.
    27- improve intnumgaussinit (use direct Newton instead of polrootsreal)
    28- improve sumeulerrat / prodeulerrat
    29- factor(x, D), D now encodes the domain over which to factor
    30- allow listinsert(L, x, n) for n > #L, like listput
    31- allow forsquarefree(n = a, b) with a*b < 0
    32- allow L[a..b] and L[^i] for t_LISTs
BA  33- gen_factorback: change argument order to match other functions
    34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the
        error estimate is given as a binary exponent; compared to the value
        dy returned up to this change, we have e = exponent(dy).
    35- suminf is now sensitive to bit precision. In library mode, use
        suminf_bitprec (precision in bits) rather than the historical suminf
        (precision in words)
    36- RgV_polint: use (asymptotically fast) FpV_polint over Fp
BA  37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime)
BA  38- # and ## now also display the realtime when nbthreads is not 1
    39- gp_format_time: remove trailing ".\n" from formatted string
BA  40- GP: arguments of the parser code W can start with ~ for clarity, e.g.
        listput(~L,x), mapput(~M,x)
BA  41- GP: the argument of a user member function is now a reference
    42- make ellheight(E, torsion point) return an exact 0 [#2109]
    43- allow rnfdisc(k, polynomial with non-integral coeffs)
    44- allow rnfconductor(k, non-monic polynomial)
    45- poldisc(t_COMPLEX) now raises an exception (used to return -4)
    46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals
        (same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis)
    47- ??? include double quotes when needed (e.g. ???conductor) [#2122]
    48- improved the prime() function
    49- mpeint1: support all t_REAL x != 0 (was x > 0)
LGr 50- nffactor now supports rational functions
    51- improve QM_gauss [treat contents sensibly]
    52- lngamma and psi near 1: cache values of zeta(odd integers)
    53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use
        nfbasis(mkvec2(T,listP), &disc). Note that the documentation was
        incorrect: it is not guaranteed that nfbasis([T, listP]) returns the
        maximal order even if listP contains all prime divisors of the field
        discriminant. See ??nfbasis
    54- nfbasis now accepts an optional argument &dK [order discriminant]
    55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf)
BA  56- [libpari] FF_Frobenius: return the image of the standard generator
    57- faster poldiscfactors()
    58- when 'log' is turned on, explicitly output the logfile name

  Added
     1- [libpari] nonsquare_Fl
     2- [libpari] set_avma
BA   3- [libpari] FpXC_FpXQ_eval
     4- [libpari] mulu_interval_step
     5- new file src/basemath/bern.c
     6- [libpari] divisorsu_moebius
     7- [libpari] ZXQ_powu
     8- new GP functions hypergeom, airy
     9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL
    10- new GP functions strsplit, strjoin
    11- new file src/basemath/str.c
    12- [libpari] has_str_len
BA  13- qfbsolve(Q,n) now support arbitrary integer n.
    14- [libpari] divisorsu_fact_factored
    15- [libpari] qfiseven
    16- [libpari] zv_cyc_minimize, zv_cyc_minimal
    17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
        which allows to handle efficiently sums, recursions, continued
        fractions, etc.
BA  18- new GP function polteichmuller
BA  19- [libpari] Flx_Teichmuller, F2x_Teichmuller
    20- [libpari] mpsinhcosh
    21- new GP function dirpowers
BA  22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc,
        FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc
BA  23- FFX_gcd, FFX_extgcd
    24- optional flag to pollegendre and polhermite
    25- new GP function pollaguerre
BA  26- [libpari] Flxn_red, Flxn_sqr, Flx_integ
BA  27- new GP functions export, unexport, exportall, unexportall
    28- [libpari] Fp_divu
BA  29- [libpari] ZpXQX_liftroots
    30- new GP functions getlocalprec, getlocalbitprec
    31- [libpari] guncloneNULL, gluncloneNULL_deep
    32- allow subst(e, x, vector v) for vector(subst(e, x, v[i]))
    33- [libpari] pollegendre_reduced
AP  34- new GP function mfgaloisprojrep
    35- optional v argument to nfmodprinit
    36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max
    37- [libpari] identity_zv, identity_ZV
    38- [libpari] polintspec, polint_i
BA  39- [libpari] FF_var, FF_preimagerel
BA  40- new GP function ffmaprel
BA  41- [libpari] closure_derivn
BA  42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime
BA  43- new GP function strtime
BA  44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace,
        Flx_invLaplace
BA  45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1)
BA  46- Generic fast linear algebra using CUP decomposition
    47- [libpari] nfX_to_monic
BA  48- new GP function derivn
BA  49- new GP function arity
    50- new GP functions idealdown, idealismaximal
    51- [libpari] bid_get_fact2
AP  52- new GP function bnrclassfield
HC  53- implement lfunmfspec in odd weight
HC  54- new GP functions ellE and ellK
    55- [libpari] maxprimeN
BA  56- support for rational model in ellratpoints and hyperellratpoints
    57- [libpari] psi1series
    58- [libpari] constzeta
    59- new GP function nfdiscfactors
    60- [libpari] RgV_is_arithprog
    61- fast algorithm for zeta([a + b*n | n<-[0..N]])
BA  62- ellheight(E) now returns the Faltings height of E
BA  63- lfun now allows non-integral weights
OB  64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110]
IZ  65- [win32+gp-sta] support for install()
    66- [libpari] setunion_i
BA  67- [libpari] hash_init, hash_init_ulong
BA  68- [libpari] FFXQ_minpoly
BA  69- [libpari] F2x_recip
    70- [libpari] RgV_isin_i

  Removed
     1- member functions .futu and .tufu [deprecated since 2.2]
     2- inferior hash function hash_str2: use hash_str
     3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf)
    K.B.
--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux         Fax: (+33) (0)5 40 00 21 23
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~kbelabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]
`