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

Done for version 2.8.0 (released ??/??/2015):

  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)
       same for x^(-1) [#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]

  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_zv
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_FlvV_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
   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
   46- [libpari] function ser_isexactzero
BA 47- [libpari] functions ZV_chinese, Z_ZV_mod, Z_nv_mod, nmV_chinese
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
BA 51- GP declaration localprec()
HIL52- [libpari] functions Fl_powers_pre, Fl_ellj_pre, Fl_elldisc_pre,
                           Fl_elltwist
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
   78- [libpari] function nfembed, nfissquarefree
   79- new binary flag to polcompositum: assume fields are linearly disjoint
   80- GP function nfcompositum
AP 81- [GP] central simple algebra package, GP functions
    aladd              algetaut           alinit             alrandom
    alalgtobasis       algetb             alinv              alsimpledec
    albasistoalg       algetcenter        alisassociative    alsplittingmatrix
    alcenter           algetchar          almul              alsqr
    alcentralproj      algetdegree        almultable         alsub
    alcharpoly         algetdim           alneg              alsubalg
    aldecomposition    algethassef        alnorm             altableinit
    aldisc             algethassei        alpoleval          altensor
    aldivl             algetinvord        alpow              altrace
    aldivr             algetmultable      alprimesubalg      altype
    algetord           alquotient         algetabsdim        algetsplitting
    alradical
   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
BA100- [libpari] RgX_Rg_eval_bk, RgX_RgV_eval
  101- [libpari] RgX_cxeval
HC102- GP function zetamult
PB103- ZM_mul: Add Strassen-Winograd algorithm
  104- GP functions sumnummonien/sumnummonieninit
  105- [libpari] RgM_gram_schmidt, RgM_Babai
BA106- GP function cotanh
  107- support sign(t_QUAD with positive discriminant)
  108- comparison operators (<,>,<=,>=): support t_QUAD with *same* positive
       discriminant

  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 !

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

