Karim Belabas on Thu, 19 Jul 2018 12:22:21 +0200

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

pari-2.11.0 (STABLE) released !

Dear PARI lovers,

I am pleased to announce the release of pari-2.11.0 (STABLE) !
The sources and binary distributions for macOS and Windows are available at
the address


This is a major STABLE release ending a development cycle which started in
November 2016. For those still using pari-2.9.* or earlier versions, it is
time to upgrade.

Have fun !


[The GP language]
  - new iterators: forperm (over permutations), forsubset (over subsets),
    forfactored/fordivfactored (over integers/divisors in factored form),
    forsquarefree (over squarefree integers), forprimestep (over primes in
    arithmetic progressions). We also allow forstep(a,b, Mod(c,q), ...)
  - new interface for handling files: fileclose, fileextern, fileflush,
    fileopen fileread, filereadstr, filewrite, filewrite1. Orders of magnitude
    faster than read / write for small incremental I/O operations
  - allow \r "foo bar" to allow filenames containing spaces (quotes around
    file names are optional; also for \l and \w).
  - new function printp to print matrices in 2-D as output by gp
    [ existed in 2.5 with a different meaning: "pretty" format ]
  - default(echo, 2): print lines as is, including whitespace and comments

[Multiprecision Kernel]
  - new function exponent()
  - new function log1p(x) = log(1+x) accurate near 0
  - improvements to sqrtn, log, lngamma, expm1

[Numerical summation and integration]
  - derivnum: allow order k derivatives
   ? derivnum(x = 0, exp(sin(x)), 16) \\ 16-th derivative
   %1 = -52635599.000000000000000000000000000000
  - new numerical summation functions: sumnumap / sumnumapinit (Abel-Plana),
    sumnumlagrange / sumnulagrangeinit (Lagrange)
  - new functions prodeulerrat, sumeulerrat, sumnumrat, prodnumrat for
    numerical summation/product of rational functions at integers or primes
  - intnum: allow power series as limits for the integration interval
  - new function laurentseries

  - new functions permorder (order of a permutation), permsign (signature)
  - binomial(n): vector of all binomial(n, k), 0 <= k <= n
  - new function vecprod = prod(i = 1, #v, v[i]) using product tree
  - new function matpermanent

[Elementary Number Theory]
  - ECPP primality proof: primecert, primecertexport, primecertisvalid; also 
    used by isprime()
  - new function divisorslenstra (divisors in residue classes)
  - new functions to manipulate Abelian characters
      * general characters: chargalois (Galois orbits), charpow (chi^n),
      * Dirichlet characters: znchar (convert datum to Dirichlet character)
        znchargauss (complex Gauss sum), zncharconductor, znchartoprimitive,
        znchardecompose (chi mod N = chi_Q chi_N/Q), 
  - issquarefree / isfundamental / quaddisc: allow integers in factored form
  - fast chinese remainder, fast multimodular reduction (reduce integer N mod
    p1, ..., pk)
  - optional flag to 'divisors' (include factorization)

[Finite fields]
  - new interface to handle maps between finite fields: ffmap (evaluate a map),
    ffinvmap (invert a map), ffcompomap (compose maps), ffextend (create a map
    from K to K[t]/(T)), ffembed(a,b) (create a map from k(a) to k(b)),
    fffrobenius (create Frobenius as a map)
  - parallel znlog/fflog over large prime fields and fields of
    characteristic <= 5

[Polynomials and Power series]
  - new interface to factorization and root finding over finite fields;
    extend factormod(f, D) for general finite fields: D = p prime [over Fp],
    D = [T,p] (over Fp[x]/(T)) D a t_FFELT (over attached Fq), or omited
    [over field of definition of f]. Same for polrootsmod.
  - new functions factormodSQF (squarefree factorization), factormodDDF
    (distinct degree factorization)
  - new function polrootsbound (sharp upper bound for complex roots)
  - new function serchop(s,n): cut off all terms of degree < n in series 's'
  - new optional argument to denominator/content/numerator to allow better
    control over semantic, e.g.,
     No arg:  denominator([1/2, 1/x, 1/y]) -> 2*y*x
              denominator([1/2, 1/x, x/y]) -> 2*x
              denominator([x/2, 1/x, 1/y]) -> y*x
     With arg: denominator(..., 1) is 2 in all 3 cases
               denominator(..., x) is x in all 3 cases
               denominator(..., y) is y in all 3 cases

[Linear Algebra]
  - Linear algebra over Z/NZ: matdetmod, matimagemod, matinvmod, matkermod,
    matsolvemod (also makes matrixqz(,-1 or- 2) an order of magnitude faster)
  - new modular implementation of linear algebra over Z and cyclotomic rings
  - asymptotically fast linear algebra over finite fields, using CUP
  - allow matsolve(M,b) when M is only left-invertible

[Elliptic curves]
  - E/Qp now allowed in ellap, ellcard, ellgroup, ellissupersingular
    [these four now also allow models which are not p-integral],
    ellintegralmodel, ellpadicfrobenius, ellpadics2 (now allows curve with
    multiplicative reduction), elllocalred
  - extend support for curves over number fields: ellheight, ellrootno,
    ellpointtoz, E.omega, E.eta, E.area, ellgroup(E,P) for a maximal ideal P,
    ellisomat [E without CM].
  - new functions elltamagawa, ellbsd, ellpadicbsd, ellpadicregulator,
    ellweilcurve, ellminimaldisc, ellisotree
  - new functions ellratpoints and hyperellratpoints based on
    Michael Stoll 'ratpoints'.

[Spaces of Modular Forms] New package; see ??14 and ??tutorial-mf
      getcache         lfunmf          mfDelta           mfEH
      mfEk             mfTheta         mfatkin           mfatkineigenvalues
      mfatkininit      mfbasis         mfbd              mfbracket
      mfcoef           mfcoefs         mfconductor       mfcosets
      mfcuspisregular  mfcusps         mfcuspval         mfcuspwidth
      mfderiv          mfderivE2       mfdescribe        mfdim
      mfdiv            mfeigenbasis    mfeigensearch     mfeisenstein
      mfembed          mfeval          mffields          mffromell
      mffrometaquo     mffromlfun      mffromqf          mfgaloistype
      mfhecke          mfheckemat      mfinit            mfisCM
      mfisequal        mfkohnenbasis   mfkohnenbijection mfkohneneigenbasis
      mflinear         mfmanin         mfmul             mfnumcusps
      mfparams         mfperiodpol     mfperiodpolbasis  mfpetersson
      mfpow            mfsearch        mfshift           mfshimura
      mfslashexpansion mfspace         mfsplit           mfsturm
      mfsymbol         mfsymboleval    mftaylor          mftobasis
      mftocoset        mftonew         mftraceform       mftwist

[Modular symbols & p-adic L functions]
  - the package now supports level N = 1
  - new functions msdim (dimension), mslattice (canonical integral structure),
    mspetersson (intersection product), mspolygon (hyperbolic polygon / Farey
    symbol attached to Gamma_0(N))
  - msfromell: use a much faster modular algorithm, allow a vector
    of isogenous curves
  - allow mssplit(M) by itself, splits msnew(M) by default

[Complex L-functions]
  - lfuncreate: allow specifying an arbitrary growth rate a(n) << n^(c + eps)
    [by default, assume Ramanujan-Petersson]
  - new functions lfuntwist (twist by Dirichlet character), lfunsympow
    (symmetric power)
  - allow zeta(power series)
  - new function zetahurwitz (complex or p-adic inputs)
  - new function zetamultall (all MZV of bounded weight), zetamultinit,

[Number Fields]
  - new functions nfeltembed (complex embeddings), nfeltsign (signs of real
    embeddings), nfpolsturm (number of real roots of s(T) for T in K[X] and
    s a real embedding of K), bestapprnf (algdep for a known number field),
    idealispower (I = J^n ?), idealredmodpower (reduce mod n-th powers)
    poldiscfactors (fast partial factorisation of poldisc(T)),
  - new functions to handle representations of galoisinit G:
    galoisconjclasses (conjugacy classes of G), galoischartable (character
    table), galoischarpoly (characteristic polynomial of representation),
    galoischardet (determinant).
  - new functions to query the GALPOL database: galoisgetgroup, galoisgetname
  - bnrinit(,,1) [include generators] is no longer necessary for bnrL1,
    bnrconductor, bnrrootnumber, bnrstark, rnfkummer, galoissubcyclo
  - faster nfgaloismatrix / nfgaloisapply(nf,s, ideal)
  - change rnfpolredabs so that it outputs a canonical polynomial.
    As a result, the function is no longer Obsolete.
  - optional argument to idealfactor [limit factorization]

[Associative and central simple algebras]
  - new functions alggroupcenter (Z(K[G])), algmakeintegral (integral
    multiplication table), algsplit (isomorphism between A/F_p and a matrix
    algebra M_d(F_p^n), where dim A = n*d^2)
  - new functions to handle full lattices: alglatadd, alglatcontains,
    alglatelement, alglathnf, alglatindex, alglatinter,
    alglatlefttransporter, alglatmul, alglatrighttransporter, alglatsubset

  - new functions plotexport / plothexport (support PostScript and SVG formats)
    The functions psdraw, psploth and psplothraw and the default 'psfile'
    are obsolete: use one of plotexport, plothexport or plothrawexport
    with format "ps" and write the result to file.
  - graph/plotport.c is now part of libpari
  - plotcolor(w, col) now allows color names (t_STR), [R,G,B] values
    or "#RRGGBB" hex triplet; returns the [R,G,B] value attached to c
  - allow plotdraw(w) for plotdraw([w,0,0])


0) Defaults:
  - change 'debugmem' default value to 1; no memory-related message at value 0
    (not recommended under gp).

1) Output changes:
  - the bid structure from idealstar has been changed, the new format is
    not compatible with pari-2.9
  - changed the definitions in polred / polredbest / polredabs / rnfpolredabs
    to decide what is the "best" polynomial to return
  - bnrdisclist output is now an ordinary vector (not a vector of vectors)
  - idealstar(,N) : always include generators, for all values of flag.
    The operation is cheap: allowing not to compute it does not make much
    sense; and G.gen is now always defined.
  - component(t_POL T, n) used to return polcoeff(T, n-1) for all n >= 1
    [ undocumented compatibility behaviour ]. Now returns a true GEN component
    whenever it exists and raises an exception when it does not
    [ n <= 0 or n > polcoeff(T)+1 ]. Use polcoef !
  - nf structure:  nf[7] now stores nf.zk / content(nf.zk). Old format is
    still supported (to read in data involving old-style nf generated by
    gp version < 2.10) but incurs a small speed penalty.
  - K.tu[2] was always a t_POLMOD; make it a t_INT if -1
  - numtoperm now returns a t_VECSMALL (so that results can be
    multiplied as permutations, etc.), no longer a t_VEC with t_INT entries
  - Ser(s, 'x, d) now always returns a series with d significant terms.
    It used to return a t_SER s in 'x verbatim and to use all given
    coefficients for a t_VEC/t_COL. The behaviour changes only if d is
    explicitly given: no change for Ser(s,'x)
  - algleftmultable now always returns the multiplication table on the
    integral basis
  - ellmoddegree no longer outputs [D, err] but only the degree D
  - in 'prettymatrix format', no longer print all 0 x n matrices as [;]:
    use [;] if and only if n = 0 and matrix(0,n) otherwise

2) Input / interface changes:
  - lfuncreate() change of format for (p,d)->Lp closure:
      * Lp here and in bad primes [p,Lp] must now use the actual local
        factor and not its inverse
      * d is now the exact number of terms needed (was 1 less), i.e.
        one need only return Lp + O(x^d)
      * bad primes are given as a separate 2nd component:
        [Lp, [[p1,L1],...[pk,Lk]]], not as [Lp, [p1,L1],...[pk,Lk]]
  - now that we have primecert, isprime(n,1) no longer outputs a certificate
    and no longer uses APRCL for large prime divisors of n-1; it now implements
    pure Pocklington-Lehmer-Selfridge and is very slow; use primecert(n) !
  - ellisomat(E,{fl}) is now ellisomat(E,{p},{fl}) (p degree of isogenies)
  - ellpadicmatrix now returns a pair of matrices (instead of a matrix
    whose entries are pairs of values); ellpadicheight and ellpadicmatrix no
    longer accept [p,[a,b]] arguments; use * [a,b]~
  - E/Qp converts coefficient to exact form using centered residues
  - factorff and polrootsff are now obsolete. Use factormod/polrootsmod
  - merged algdecomposition + algsimpledec -> algsimpledec
  - renamed algsplittingmatrix -> algtomatrix
  - polcoeff is deprecated and renamed polcoef: it now only applies
    to scalars, polynomials, series and rational functions; no longer to
    vector/matrices or quadratic forms (use [], or "component", or
    [a,b,c] = Vec(q) for a binary quadratic form q).

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]