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

Done for version 2.13.0 (released 19/10/2020):
  Fixed
     1- sizebyte(objects containing t_LIST): would assign size 3 to all lists
     2- [Map(Mat([0, 0])), [0, 0, 1]] -> SEGV
     3- zeta(I+2^(-64)) -> SEGV
BA   4- permorder returned incorrect results for large orders
     5- p=[4,54]; lfunmf(mfinit(p,0), mftraceform(p,0)) -> oo loop
BA   6- printf("%5.2f",M) transposed M [#2252]
     7- bnfinit instability at low accuracy. E.g., at \p38
        P=x^7+22*x^6+184*x^5+764*x^4+2020*x^3+3792*x^2+5712*x+4;
        bnfinit(P,1).no -> 4 times too large
     8- accuracy problems in bnfisunit after bnfinit(P,1). E.g.,
        P=x^7-22*x^6+169*x^5-568*x^4+1263*x^3-1506*x^2+2295*x+2;
        setrand(1); K=bnfinit(P,1); U=bnfunits(K,idealprimedec(K,2));
        bnfisunit(K,4*(x^2-18*x+85)/x^2*Mod(1,K.pol),U) -> error

  Added
     1- examples/pari.f90: example FORTRAN binding
     2- [libpari] quodif
BA   3- [libpari] perm_sqr, perm_powu, perm_orderu
BA   4- asymptotically fast quadunit

  Changed
     1- faster intnumgaussinit + change default number of points to B/4,
        suitable when b - a ~ distance to the nearest pole
BA   2- [libpari] perm_pow now take a t_INT exponent
BA   3- [libpari] permorder and perm_order now return a t_INT.

Done for version 2.12.1 (released 16/09/2020):
  Fixed
BA   1- plotlines flag was ignored
     2- fileopen(,"w" or "a") was bypassing the check for 'secure' default
     3- bug in idealismaximal: K=nfinit(y^2+7); idealismaximal(K,[11,7;0,1])->0
     4- bnfcertify did not certify correctly its argument when DEBUGLEVEL > 1
        (\g 2 and above) and the computed class group was trivial (introduced
        in 2002, commit d3d44841). The code was correct at \g1 or \g0, and in
        all cases if the computed class group was non-trivial.
     5- nfdiscfactors(nfinit([x^2+1, [1,x]])) -> wrong result (didn't support
        inputs from nfinit([T, integer basis]))
     6- nfinit(rnf) would produce a broken nf (not supporting
        nf_get_ramified_primes)
     7- [mf,F] = mffromqf([2,0;0,2]); L=lfunmf(mf,F) => wrong values
     8- t=mfTheta();mfslashexpansion(mfinit(t),t,[0,1;-1,0],1,1) -> error
     9- poldisc(x^4 + 8/y*x) -> type error in Q_divi_to_int [#2157]
    10- T=mfTheta(); mfeval(mfinit(T),T,I/10) -> wrong sign
    11- mfslashexpansion(mf,F,huge matrix,...) -> overflow
    12- mf=mfinit([470,2],0);F=mfeigenbasis(mf)[7]; mfcuspval(mf,F,1/5)
        -> division by 0
    13- quadtofp(quadgen(-3)) -> t_FRAC component [#2158]
    14- [from 2.12.0] nfgcd wouldn't terminate [#2159]
    15- conjvec(t_FFELT of characteristic 2) was missing a conjugate
    16- nf2 = nfnewprec(nf) could return incompatible nf2 [#2154]
    17- [from 2.12.0] u_forprime_next around 2^63 could return primes larger
        than upper bound
    18- [from 2.12.0] gcd(2*x, 2*x+1) -> 2 [instead of 1]
    19- [from 2.12.0] deriv(2/(4*x^2+1),x)->inconsistent exact division [#2162]
    20- issquare(non square t_FFELT, &x) -> SEGV [#2163]
    21- rdivii / rdiviiz imprecise, e.g.
        a=28088408347805994933529600180306266460976;
        b=10333147966386144929666651337523200000000; rdivii(a, b)
    22- typo in QM_inv (wrong result)
    23- modular symbols package: better type checks
    24- division by 0 in Flx_extresultant when one input is 0
    25- [from 2.12.0] lfunconductor(1,[]) -> SEGV
    26- internal error in isprime(,1) after addprime() [#2166]
    27- ZM_gauss returned incorrect result for t_MAT RHS and 0 input
BA  28- lfunhardy(..., t) with t<0 -> error
BA  29- ellweilpairing(E,P,P, odd m) -> wrong result [#2172]
PB  30- FlxqM_mul could return wrong result [#2174]
    31- p = 4*vecprod(primes([3,373]))*587-1; quadclassunit(-p) -> SEGV [#2175]
BA  32- Using local in export()ed functions could crash GP
    33- Flx_div_by_X_x(A, x) didn't handle deg(A) <= 0
    34- M=mfinit([11,2,Mod(3,11)]); f=mfbasis(M)[1]; lfuncheckfeq(lfunmf(M,f))
        -> type error
    35- rare random SEGV in nfbasis [#2178]
    36- missing type checks in lfunthetacheckinit [#2179]
    37- idealispower(x,n,&y): y could be incorrect [#2181]
    38- SEGV in idealispower [#2183]
    39- inconsistencies in subst for constant polynomials: e.g.,
          type(subst('u^0,u,x)) -> t_POL (was t_INT)
          subst('u^0,u,Mat(Mod(1,2))) -> [Mod(1,2)] (was [1])
XR  40- factorpadic: incorrect factors (might not lift to Qp)
        E.g. T=polsubcyclo(271,9); factorpadic(T,3,7)[4,1]
BA  41- polcompositum(x^2+x/3+1,x^2+x/3+1) -> SEGV
    42- p=nextprime(2^20);q=nextprime(2*p);n=q*p;v=n+1;P=x^2-1;
        zncoppersmith(v*P,v*n,p,p*v) --> oo loop
    43- missing reduction of pr.gen in idealprimedec [ slowdown ]
        + nfmodprinit [ division by 0 ]
JR  44- polylog(-m, tiny z): catastrophic cancellation, e.g. polylog(-100,.5)
    45- prodeulerrat((p-2)/(p-1)+(p-1)^(m-1)/p^m,1,3) slow and imprecise [#2192]
    46- Mod(1,5) * O(x) -> O(x) [instead of Mod(0,5) + O(x)]
    47- lfuninit: lfunrootres calls too expensive if rootno and polar part known
    48- incorrect rounding in divrr(realprec = 3)
    49- polrootsreal(x+0.) -> SEGV
DB  50- mspolygon(1,2): incorrect drawing
    51- qflllgram([2,2,3;4,5,6]) -> SEGV
    52- printf("%10.6f\n",2^-100) -> SEGV [#2198]
    53- mfsturm: off-by-1 error
BA  54- ((x^7+x^3+x+1)*Mod(1,Mod(1,2)*d))%(x^4+x^3+x^2+1)->x^3+x
        instead of Mod(1,2)*x^3+Mod(1,2)*x [#2199]
    55- tan(-127336279536511925./2^49) -> completely wrong at \pb64
    56- ellocalred / K != Q: wrong encoding for I0 (kod = 1 instead of 0)
    57- atanh near -1: large relative error
    58- acosh near 1 or -1: large relative error
    59- type(subst('x^0,'y,0)) -> t_INT (instead of t_POL)
    60- bnfisprincipal: overflow when h >> 1
    61- lfun: Pi^s or (2Pi)^s imprecise when Im(s) >> 1
BA  62- factor((x-1)*(x-y)^2) --> oo-loop
BA  63- ellap could fail with division by 0
    64- wrong results in bnfsunit [#2207]
    65- problems with gequal(t_SER or t_POL with inexact coefs or constant
        wrt. some variables). E.g. S=x+O(x^2);T=S+O(y); S == T -> 0 [#2188]
    66- mfkohnenbijection failure [#2211]
MW  67- mateigen would sometime return eigenvalues instead of eigenvectors
AE  68- [libpari] FpX_oneroot_split could fail for deg 2 and 3.
BA  69- [pthread] Fix potential crashes when cancelling threads.
    70- derivnum: add sanity checks for 'ind' [#2216]
NM  71- nfisincl(x^2-2^5,nfinit(x^4-2)) -> wrong result [#2213, #2214]
    72- nfeltsign: wrong results for non-primitive elements in presence of
        ramification at infinity [#2217]
HC  73- F=mfbracket(mfbd(mfEk(4),4),mfTheta(),1); mfcoefs(F,0) -> SEGV
    74- gammamellininv([0, 10^-38], 3/10) -> junk
    75- mfshimura, mfkohnenbijection: could create mf spaces with
        inconsistent character.
BA  76- [mpi] sending t_LIST to remote nodes did not work.
BA  77- my(a,b); parvector(1,i,self()) --> SEGV
AP  78- bnrclassfield(,,2) --> sometimes relative polynomial
AP  79- nfgrunwaldwang could modify its arguments
    80- ldata_vecan(an, N, prec): make sure the function returns N coefficients
    81- T=Pol([1,0,6748,-750056,45535504,-2530688944,140646000784]);
        bnfinit(T,1).cyc -> [240, 12, 4, 2, 2, 2] (instead of [120, 4, 4, 2])
BA  82- [mt] variable priorities in threads could be incorrect.
    83- galoissubcyclo: wrong result with bnr input [#2232]
    84- subgrouplist(bnr) != [] when modulus is not the conductor
    85- incorrect type checks in ideallist
BA  86- polmodular(p,,q) incorrect for large q
BA  87- [pthread] polgalois(deg>7) could crash
    88- forqfvec or qfminim with negative bound => crash [#2237]
    89- Z_issmooth_fact: incorrectly include 1 among prime factors
    90- Rg[MX]_rescale_to_int: result had a large power-of-2 content
DJ  91- sqrtn(Mod(13,112),6) -> o loop [instead of 'bad input' error]
    92- addprimes() creates issues with nfdisc [wrong results], because it
        breaks the assumption that a potential composite in a "bounded
        factorization" has to come last.
    93- addprimes() creates issues with thue [wrong results].
        addprimes(360000000029);
        #thue(x^2+1,500009*500029* 360000000029* 2^100) -> 0 [instead of 32]
    94- factor(257377849,100) -> [61,2; 69169,1] instead of  [61,2; 263,2]
    95- addprimes() creates issues with nffactor [wrong results].
    96- gmulsg(0, t_REAL) followed mulsr semantic (t_REAL) instead of gmul's
       (t_INT). Analogous problem for gmulsg(0, t_COMPLEX)
BA  97- MPQS choice of multiplier and tuning were not optimal

  Changed
     1- [libpari] rename rootsof1 -> nfrootsof1
     2- [libpari] rename isirreducible -> polisirreducible
     3- hyperellpadicfrobenius: allow X defined over a number field and
        compute Frobenius over unramified extension of Q_p
     4- matsnf(integral matrix): use modular algorithm
     5- rnf structure now contains the list of relative ramified primes
     6- use the documented semantic for Euclidean division involving real t_QUAD
        e.g. x % y is x - floor(x/y)*y; for a t_QUAD x and t_INT y, we used
        to mod out y in "real" and "imaginary" part independently.
     7- [libpari] rename rootpadic -> polrootspadic
     8- polrootspadic: allow computing roots in unramified extension of Q_p
     9- definition of lfunhardy for non-self-dual functions: remove
        rootnumber, which is not well defined since it depends on the choice
        of dual sequence a^*(n)
    10- improved RgXn_powu / RgXn_powu_i for large valuations
    11- improved ZM_ker for wide rectangular matrices
    12- lfun(t_INT D): allow arbitrary non-0 D encoding the attached
        primitive character coredisc(D) (as for other character formats)
    13- exp(small rational number): use binary splitting
    14- parsum: removed optional argument [allows grouping of subsums => faster]
BA  15- old gen_ZpM_Dixon renamed to gen_ZpM_Dixon_Wiedemann,
        new gen_ZpM_Dixon with simpler interface
    16- better formula for Catalan
BA  17- QXQ_div_ratlift renamed to QXQ_div
    18- disallow mfeisenstein(k,chi1,chi2) when Q(chi1 chi2) is not its field
        of definition
    19- improved ZM_rank for rectangular matrices
    20- asymptotically fast variant for RgX_translate algorithms
    21- ZX_Uspensky(flag = 0) is now guaranteed to find all rational roots
    22- lfunzeros: allow intervals not contained in R^+
    23- removed obsolete function 'bnfcompress'
    24- [libpari] rename perf -> qfperfection
    25- format of bnf structure, to allow compact representations
BA  26- [libpari] Z_to_F2x(s,v): v is now a shifted variable number
AP  27- matrixqz(,-1 or -2): faster code + no longer return result in HNF
AP  28- allow nfsubfields([nf,fa],): van Hoeij-Klueners-Novocin algorithm
    29- nfsubfields: retune to avoid huge inertia degrees
BA  30- qfbsolve new flag: bit 1: 1 solution, bit 2: add imprimitive solutions
BA  31- revert 2-12-0 C18: qfbsolve with default flag = previous behaviour
    32- division/inversion power series: use Newton
    33- deprecate LLL_COMPATIBLE (now implicitly always set)
    34- bnfissunit is obsolete, use bnfisunit
    35- bnfsunit is mostly obsolete, use bnfunits
    36- bnfisunit and bnfissunit: torsion unit exponent is now a t_INT (used
        to be a t_INTMOD)
    37- support compact representation in nfeltmul, nfeltpow, nfeltdiv,
        nfmodpr, nfeltsign
    38- elldivpol for negative n: define f_{-n} = -f_n [ was f_n ]
    39- support plotinit/plotexport even when the graphic engine is disabled
        (Configure --graphic=none)
    40- gpow(x,n): faster and more precise when n is a t_COMPLEX
    41- faster formula for log(2)
BA  42- nfgaloisconj(deg 2 pol): swap result to follow nfroots.
BA  43- lexical variables names can now reuse builtin functions names as in
        fun(theta)=my(gamma=1/3);sum(omega=1,10,exp(2*I*Pi*gamma*theta*omega)
    44- mfshimura: disallow the discriminant D argument, only allow
        squarefree positive t
BA  45- closures: do not copy the full context, only the accessible part
    46- add optional argument to randomprime [select congruence class]
    47- add optional argument to sqrtint [set remainder]  [#2229]
    48- gammamellininv*(A,...): allow A to be an L-function
    49- bnrinit: optional argument to compute Cl_f/n, avoid tough discrete logs
    50- rnfkummer: removed "all" flag, function now obsolete. Use bnrclassfield!
    51- rnfconductor: flag to compute Cl_f/[K:Q] instead of Cl_f
    52- bnrconductor_i is now obsolete, use bnrconductor_raw or bnrconductormod
    53- dvdxxx(x,y) allow y = 0 [and return 0 unless x = 0]
    54- [libpari] bnrsurjection now returns [matrix, cyc(F), cyc(f)]
    55- idealstar: optional argument to compute G/G^n, avoid tough discrete logs
HC  56- zetamultall: add flag
    57- subgrouplist: allow any object affording a .cyc method
    58- remove zetamultinit and corresponding optional argument in zetamult
    59- [libpari] ZM_lll: flags LLL_INPLACE and LLL_GRAM are now incompatible
        (reducing a Gram matrix in place without returning the base change
        matrix is not useful; supporting it would complicate the code)
AP  60- improve bnfisprincipal in fields of large degree (test more small
        elements)
    61- bnrgaloismatrix(bnr) no longer needs a bnr with generators
        (from bnrinit(,1))
    62- bnrisprincipal(bnr,1) no longer needs a bnr with generators
        (from bnrinit(,1)). Added flag 4 analogous to bnfisprincipal (compact
        representation of principal part)
    63- added sanity checks when parsing default args in 'install' prototypes
    64- improved zetahurwitz: faster & use less memory
BA  65- MPQS does not use temporary files anymore

  Added
     1- new GP function rootsof1
BA   2- [libpari] F2xqX_halfgcd, FFX_halfgcd
     3- [libpari] uis2psp, uispsp
     4- [libpari] ZV_lcm
     5- [libpari] nfhyperellpadicfrobenius
     6- [libpari] rnf_get_ramified_primes
     7- allow nfinit([T, basis, ramified primes])
     8- allow nf.p, rnf.p [rational ramified primes]
     9- [libpari] idealfactor_partial
    10- add flag bit to ZM_snfall_i
    11- allow real t_QUAD in floor, ceil, divrem, %, \, \/
    12- [libpari] ff_parse_Tp
    13- new GP function mfisetaquo
    14- [libpari] Qab_tracerel, QabV_tracerel, QabM_tracerel
BA  15- [libpari] RgXV_to_FlxV, FlxV_Flv_multieval,
                  F2v_and_inplace, F2v_negimply_inplace, F2v_or_inplace,
                  F2v_hamming
    16- [libpari] ZpX_primedec
BA  17- [libpari] QM_sqr, FqC_to_mod, ZXQX_gcd, QXQX_gcd
    18- [libpari] radicalu
    19- parallel support for lfuninit
    20- new GP function parplothexport
BA  21- [libpari] gen_ZpM_Newton, ZpM_invlift
BA  22- [libpari] F2xn_red, F2xn_inv, F2xX_to_F2xC, F2xXV_to_F2xM
HC  23- direct formulas for quadratic Dirichlet L-functions at integers
    24- new GP functions: eulerfrac, eulerpol, eulervec
    25- [libpari] lfunquadneg
BA  26- [libpari] vecvecsmall_sort_inplace, vecsmall_isconst, vecsmall_is1to1
BA  27- [libpari] groupelts_quotient, quotient_groupelts, groupelts_to_group
    28- new GP functions mscosets, msfarey
    29- new GP function ellpadiclambdamu
BA  30- [libpari] Flx_Fl_sub, Flx_is_totally_split, Flxq_autpowers
    31- [libpari] Flx_translate1_basecase
    32- [libpari] Vgaeasytheta
BA  33- [libpari] RgV_type, RgV_type2, closure_callgen0prec
BA  34- lfuncreate: support for closures of arity 0
    35- [libpari] ZX_sturm_irred, ZX_realroots_irred
    36- [libpari] QM_image, QM_image_shallow
    37- new GP function asympnumraw
    38- [libpari] QM_gauss_i, SL2_inv_shallow
    39- [libpari] checkfarey_i
    40- [libpari] mspadic_parse_chi, mspadic_unit_eigenvalue
    41- [libpari] ellQtwist_bsdperiod
    42- [libpari] mseval2_ooQ
    43- [libpari] etaquotype
    44- new GP functions fft, fftinv
BA  45- [libpari] init_Flxq
    46- compact representation of units in bnf (bnfinit(pol,1)) and of
        principal ideal generators (bnfisprincipal(bnf,id,4))
    47- [libpari] Flv_factorback, FlxqV_factorback, famatV_zv_factorback,
        famatV_factorback, FqV_factorback
    48- [libpari] nflogembed, nf_cxlog, nfV_cxlog, ZMrow_equal0, ZC_u_divexact
BA  49- [libpari] FpXn_expint, Flxn_expint, Flx_blocks, FlxX_blocks
    50- [libpari] bnf_get_sunits, nfsign_tu, nfsign_fu, ideallog_units,
        sunits_makecoprime, famat_remove_trivial, bnf_build_cheapfu,
        bnf_compactfu, bnf_compactfu_mat, bnf_has_fu, famat_idealfactor,
        famat_div, famat_nfvalrem
BA  51- [libpari] factorial_Fl, factorial_Fp, FpV_prod
BA  52- [libpari] ZX_compositum
BA  53- [libpari] FlxXn_red, FlxqXn_mul, FlxqXn_sqr, FlxqXn_inv, FlxqXn_expint
BA  54- [libpari] FlxX_Laplace, FlxX_invLaplace, FlxqX_Newton, FlxqX_fromNewton
    55- [libpari] vec_reduce, vec_equiv
    56- lfuncreate(znstar or bnr,): allow a vector of characters =>
        vector-valued L-function
    57- [libpari] gc_const
AP  58- [libpari] QM_ImZ, QM_ImZ_all, QM_ImQ, QM_ImQ_all
BA  59- [libpari] RgXn_expint, FpXQXn_expint, FqX_expint
AP  60- new GP functions nfsubfieldscm, nfsubfieldsmax
BA  61- new GP function lfunshift
    62- [libpari] Q_lval, Q_lvalrem
BA  63- [libpari] ZXX_evalx0, zx_z_divexact, zx_lval, upowers
    64- [libpari] is_qfb_t
    65- new GP function eulerianpol
BA  66- [libpari] FlxX_translate1, zlx_translate1, zlxX_translate1
    67- [libpari] rfracrecip
    68- [libpari] ZXQ_minpoly
    69- [libpari] bnrchar_primitive_raw
    70- new GP functions matreduce, bnfunits
BA  71- [libpari] QXQ_to_mod_shallow
    72- [libpari] nf_cxlog_normalize
BA  73- [libpari] cmpss, cmpuu
BA  74- [libpari] FpX_Fp_div, FpX_divu
BA  75- holes in multi-assignement: [a,,c]=[1,2,3]
    76- [libpari] expIPiR, expIPiC
BA  77- [libpari] forqfvec1, pariplot, sumdivmultexpr
    78- [libpari] powPis, pow2Pis
BA  79- nfisincl: new flag: return a single embedding
BA  80- [libpari] FpXC_to_mod, FpXM_to_mod, FqXC_to_mod, FqXM_to_mod
BA  81- [libpari] FFX_add, FpXY_FpXQ_evaly
BA  82- [libpari] halfgcdii, RgX_halfgcd
BA  83- new GP function halfgcd
BA  84- [libpari] pari_realloc_ip
BA  85- [libpari] random_zv, F2m_transpose, F2m_row
BA  86- [libpari] F2Ms_ker, F2Ms_colelim, F2Ms_to_F2m, F2m_to_F2Ms
    87- [libpari] Qdivis, Qdiviu
    88- [libpari] bnr_subgroup_check
    89- [libpari] pow2Pis, powPis
AP  90- [libpari] bnrisprincipalmod, ideallogmod
    91- [libpari] bnrconductor_raw, bnrconductor_factored
    92- [libpari] cyc_get_expo
    93- new GP function bnrmap
HC  94- new GP function polylogmult
    95- new GP function zetamultdual
    96- [libpari] checkbnr_i
    97- [libpari] absZ_factor_limit_strict
    98- [libpari] Idealstarmod, ZV_snf_gcd, ideallog_units0
BA  99- [libpari] FqC_FqV_mul
   100- [libpari] gen_sort_shallow, vecvecsmall_sort_shallow
BA 101- new GP functions foreach, parforprimestep, parforeach
BA 102- [libpari] ZXQ_powers, ZXX_Q_mul, QXQX_mul, QXQX_sqr, QXQX_powers
BA 103- [libpari] Kronecker_to_ZXQX, QXQX_QXQ_mul, ZXQX_ZXQ_mul
   104- [libpari] zv_sumpart, div_content, hash_zv
BA 105- [libpari] groupelts_conj_set, group_subgroup_is_faithful
   106- qflll(x,3) in place reduction: return x * qflll(x) [faster]
   107- [libpari] idealpseudominvec
   108- [libpari] galoismatrixapply
BA 109- new GP function permcycles
BA 110- [libpari] FpX_FpXV_multirem, FpXV_chinese
BA 111- galoisinit: support for group (3x3):4 (GAP4(36,9))
BA 112- [libpari] minim_zm
   113- new GP function dirpowerssum
   114- [libpari] vecfactorsquarefreeu_coprime
BA 115- [libpari] nfX_disc, nfX_resultant
BA 116- new GP function lfundual
   117- [libpari] RgM_ZM_mul

  Removed
     1- obsolete function rootsof1_kannan: use nfrootsof1
     2- obsolete function checkbnrgen: use bnr_get_gen

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)
