Karim Belabas on Fri, 08 Oct 2010 18:59:22 +0200

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

pari-2.4.3 (testing, ALPHA) released

Dear PARI lovers,

I would like to announce the release of pari-2.4.3-ALPHA. The sources
can be obtained through the address


It is also partly a bugfix release for the TESTING development branch
(181 bugs fixed). Please help us test this ALPHA release!

See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems or
submit wishlist items.

Some highlights :

  - The GMP library is now used by default if Configure can find it.
  - Schoenhage-Strassen big integers multiplication to native kernel
    (very useful if GMP not available)
  - faster multiplication of integer polynomials (Kronecker's trick)

[Linear Algebra]
  - all LLL variants use an implementation of NGuyen & Stehle's L^2
    algorithm : stabler, much faster
  - better resultant

[Elliptic curves]
  - ellap() now uses the SEA algorithm (port of GP's ellsea package).
  - discrete logarithm [ elllog() ], group structure of E(Fp) [ ellgroup() ],
  - division polynomials [ elldivpol() ]
  - Tate and Weil pairings [ elltatepairing() / ellweilpairing() ]

[Number Fields]
  - many bnfinit() improvements [ class group and units ]
  - faster quadhilbert(D < 0) [ Hilbert class field via CM ]
  - Frobenius elements [ idealfrobenius() ]
  - ramification groups [ idealramgroups() ]

  - formatted printing : printf, Strprintf
  - alarm(n) to abort a lengthy computation after n seconds.
  - === "isidentical" operator (much stricter than ==)
  - the debugger ("break loop") is now *enabled* by default
    [ set breakloop = 0 in your gprc to disable it ], and no longer
    controlled by trap(). The debugger is a little more verbose
    concerning where the error occured :

    (18:39) gp > f()
    ***   at top-level: f()
    ***                 ^---
    ***   in function f: g()
    ***                  ^---
    ***   in function g: h()
    ***                  ^---
    ***   in function h: 1/x
    ***                   ^--
    *** _/_: division by zero
    ***   Break loop: type 'break' to go back to GP
    break> x

  - *Many* library functions exported and documented.

Have fun,


P.S: The Changelog.

Done for version 2.4.3 (released 08/10/2010):

    1- \h m-n no longer worked
BA  2- some error messages displayed internal token names (e.g for '1)
    3- named colors in 'graphcolormap' were not portable across graphic drivers
    4- setunion(Set(),Set()) -> SEGV [#714]
DE  5- [Solaris] pari.desc won't compile [#715]
    6- 822.pm broke the formatting of inline program examples
    7- memory leaks in pari_close_opts [ freeep(), parser stacks, some
       defaults... ]. FIXME: calls to getpwuid introduce (small) leaks
    8- ZV_Z_mul might not reset clonebit.
    9- nfeltreducemodpr --> gerepile errors [#716]. Also SEGV for residue
       degre > 1 (when p does not divide the index)
JD 10- write1("/dev/null", foo);1 --> extra newline
JD 11- is_dir_stat() gave incorrect results on special files (pipes,...)
JD 12- read() would block on pipes
   13- nfeltreducemodpr used different canonical representatives than all other
       modpr routines [#719]
   14- rnfconductor(,,1) did not recognize some abelian extensions [#718]
       (when the discriminant of a defining polynomial for the absolute number
       field could not be factored). Related to Changed-4.
   15- polgalois could confuse S_11 and F_110(11) if a certain polynomial
       discriminant could not be fully factored. Related to Changed-4.
   16- a = 0./x; a+a --> 0.
BA 17- [from 2.4.2] use of pointers in recursive expressions [#717]
BA 18- [from 2.4.2] trap() did not restore evaluator states [#722]
   19- simplifications missed when adding t_RFRAC [#721]
   20- gtofp(1 + 0*I, prec) should not return 1. + 0.*I but 1.
       gtofp(0 + (tiny real) * I, prec) should make sure the real part is
       converted to a zero of sufficiently small exponent (otherwise the
       modulus of the result is zero, because 1E-100 + 0E-28 = 0E-28)
   21- factor(500501^36): impossible assignment I-->S
   22- quadray(-7,6) [or other "impossible conductors"] --> oo loop [#725]
   23- acosh([Pol(1)]) -> gerepile error [#728] (same asin, asinh)
   24- rnf functions sometimes do not reduce their output when relative
       extension has degree 1 [#727]
   25- zetakinit(bnfinit(...)) -> gerepile error
   26- zeta(1-2^31 or 1-2^63) -> SEGV [#730]
BA 27- priority of << had become lower than priority of * (should be =)
   28- last digit of polylogs was wrong
BA 29- missing GC in the leftrightpow functions
   30- bnr=bnrinit(bnfinit(y^2-229,1),5,1); rnfkummer(bnr,,3) --> oo loop
   31- mathnf(a,1) could have negative entries if non-trivial kernel [#741]
   32- [Configure -pg] some variables not written to pari.cfg
   33- missing subfields in nfsubfields [#744]
   34- [readline] <F1> or <M-h> would fail on 'fun()'. Delete trailing
       garbage in help routine.
   35- modular matrix inversion routines used O(n^2) inversions instead of O(n)
   36- print1() + read() or extern() + error/warning ==> missing \n
   37- infinite loop in nffactor [#751]
   38- ellordinate couldn't handle t_FFELTs
   39- eint1(10,10) completely wrong
   40- ispower broken due to 1) uninitialized variable, 2) insufficient
       precision [#916]
   41- compilation fails with yacc unable to handle parse.y [ add explicit
       rule in Makefile to prevent from generating a wrong one ]
   42- duplicate factors in nffactor (easy cases) [#761]
   43- ellisoncurve(e, P) didn't check that "point" P had the correct format
   44- znlog(...,znprimroot(p)) --> SEGV [#765]
   45- wrong signs in bnfisintnorm e.g. [bnfinit(x^3+5), 5] -> x [#767]
   46- x/(x+2) * Mod(1,2) -> Mod(1, 2)*x/(x + 2)  [ should be Mod(1,2) ]
   47- substpol(x/(y^3*x+1),y^2,1) -> x/(y^3*x + 1) [ should be x/(y*x+1) ]
   48- missing sanity checks in rnfbasistoalg()
   49- setrand(1); E=ellinit([0,0,0,1,T^4]*Mod(1,ffinit(2,7,T))) --> "weird
       base ring; can't divide"
   50- nffactor(nfinit(y),x*y)
       nffactor(nfinit(y),x^2*y)  --> errors or SEGV. [#769]
   51- hilbert(1,1,1) --> oo loop [#770]
   52- nffactor(y^2+1, x+1/2) --> x+1/2 [ not integral ]
   53- nffactor(y^2+1,x*y+1) --> x*y + 1 [ not normalized, missing POLMOD ]
   54- nffactor(y^2+1,x^2+2*y+1) --> x^2+2*y+1 [ missing POLMOD ]
   55- ellpow() with CM raised a "division by 0" instead of returning [0] [#777]
   56- ellpow(e,z,2^20*I) --> norm too large in CM.
   57- p=x^4-x^3+x^2-x+1; tnf = thueinit(p); thue(tnf,1) -> missing solutions
       (could occur whenever p has no real root) [#764]
   58- missing GC in numtoperm()
   59- harmless uninitialized memory read in mulrrz_i()
   60- sigma(..., 2) --> SEGV [ introduced in 2.4.1 ] [#783]
   61- tuning problems in bnfinit
       bnfinit(polredabs(quadhilbert(-2939))) --> oo loop
   62- minor inaccuracy in GMP kernel (affir)
   63- missing GC in gamma / lngamma
   64- obscure SEGV when setting 'log' in a file read from command-line
       as gp foo.gp [#789]
   65- check that moduli are compatible in Rg_to_Fp(t_INTMOD, t_INT)
   66- matsolve([1;2;3],[1,2,4]~) --> [1]~  (should raise an error)
   67- allow polredabs(x in Q[X])
BA 68- [galoisinit] Documentation of "weakly" supersolvable was incorrect.
   69- binomial(t_REAL or t_COMPLEX, k) was very slow for large k
   70- quadclassunit(-3 or -4) --> one extra (obsolete) component.
BA 71- the evaluator did not garbage collect huge expressions [#713]
BA 72- changing a function in use caused a crash [#784]
   73- vecsort() would not check the type of element in 1-dimensional vector
       [ e.g. vecsort([I] now raises an error ]
   74- RgX_val would raise a SEGV on t_POLs with exact *non-rational* 0
       leading coeff, e.g. Mod(0,2)*x
   75- SEGV (stack corruption) in idealval(K, rational number, pr) [#808]
   76- All the charpoly(x,v) variants failed when v > variable(x)
BA 77- conjvec did not support FFELTs.
   78- memory leak in t_LIST handling
   79- polrootsmod(,1) could return an incomplete result [when 0 was a root
       or there was a double root], e.g. polrootsmod(x^3 + x^2 + 21*x,23,1)
IM 80- lngamma(x) gave incorrect results (off by 2*Pi*I) when real(x) was a
       negative half-integer.
   81- trying to write to a binary file and failing leaked a file descriptor
   82- long-standing stack corruption when <C-C> pressed during gclone [#458]
   83- idealaddtoone had problems with 0 ideals [#829]
   84- wrong results in qfgaussred() [only totally real case was correct]
   85- uninitialized memory read in divrr (both kernels), would only affect
       the last bit of the result, but could cause SEGV on empty stack.
   86- After A=1/(y + 0.); B=1. + O(y); all of A*B, A/B, B/A caused an error
   87- wrong result in ellap(E, 2) if bad reduction
   88- 0.*x+1 == 1 --> 1 but 0.*x^2+x == x  --> 0 [ latter is now 1 ]
   89- ffinit(2,30) --> division by 0 [typo in FlxY_Flx_div], [#859]
   90- when unexpected exception/signal raised (^C, stack overflow, out of
       memory), == would cancel it and silently return wrong value [#329]
   91- reading recently freed memory in popinfile()
   92- contfrac(1,[],-1) ==> SEGV [#865]
   93- missing type checks in bnrconductorofchar [#867], nfhilbert [#868]
   94- unstable evaluation of tan(t_COMPLEX); at \p9, try
BA 95- Vecsmall([1,1])^-1 returned garbage
   96- was not handling nffactor(*huge degree* nf, *non-monic* t_POL) properly
       --> wrong result and possible memory corruption [#870]
   97- polredabs: excessive stack usage [#872]
   98- besselj(0., 0) --> error [#880]
   99- polred didn't accept non-monic inputs
  100- factor(..., 10^100) ==> "overflow in t_INT-->long conversion" [#855]
IZ101- missing `const's in groupid.c cause massive copying to stack.
  102- [native kernel only] int_normalize() didn't treat properly inputs
       of lgefint 2
  103- gerepile errors in quadclassunit(13).gen or .cyc
  104- from_Kronecker & FpXQX_from_Kronecker returned polynomials with invalid
       first codeword [ unused bits not reset to 0 ]
  105- gred_rfrac_simple(n,d) [ basic constructor for t_RFRAC n/d ] did not
       cater for d = constant polynomial
  106- RgX_extgcd created invalid objects in trivial cases [ gen_0 used by
       RgX-only routines ]
BA107- Fix detection for ppc64 running in 32bit mode.
  108- Fp_div used remii instead of modii: Mod(3,5)-1/3 -> Mod(0, 5) [#893]
  109- trying to prevent accuracy problems in thue() caused oo loop
  110- wrong results in matsnf with t_POL entries [#901]
       minpoly(matrix(4,4,i,j,i/j)) -> x^3 - 4*x^2 + x
  111- thue(thueinit(x^3-100,1), 25) -> "Short continued fraction"
  112- thue(thueinit(x^3-48, 320) -> missing solutions (similar problem
       when LHS is a polynomial of degree d and RHS includes a d-th power).
  113- completely wrong results in nfsnf
  114- intformal(A,Y) -> 1/2*A^2
  115- uninitialized memory read in sin / cos / exp (possibly fed random
       final digits to the algorithm, normally truncated away before returning)
  116- nffactor(): SEGV if "relifting" was necessary (very rare)
  117- nffactor(): obscure "no factor" bug [when trial division found and
       extracted *non monic* factors], #930
  118- incorrect output type in FpX_factor [#933]
  119- possible stack corruption in polylog() + missing imaginary part.
  120- incorrect final simplification in idealtwoelt(nf, x, y).
       Eg: idealtwoelt(nfinit(x^2+23), 3, 6) -> [0, 0]~
BA121- listsort() could return a pointer referencing freed memory: make it
       return void
BA122- src/kernel/ix86/asm0.h had an incorrect #line entry.
  123- rnfkummer could miss some fields ( bug in rnfnormgroup() ), e.g.
       bnrM = bnrinit(bnfinit(X^4 - 34*X^2 + 1189,1), 5, 1);
       rnfkummer(bnrM, matdiagonal([3,1,1]))
  124- nfgaloisconj(y,1) -> invalid object
  125- weird error message in ellpointtoz on loss of accuracy [#962]
  126- ^C before inital prompt appears ==> SEGV [#965]
BA127- ellsea(,,1) did not work
BA128- COMPAT file was missing some functions renamed in 2.3: 
       flisexpr, flisseq -> gp_read_str; lisGEN  -> gp_read_stream
AF129- fix for documentation of polcoeff, extern and readvec
BA130- 1/matrix(2,2,i,j,Mod(0, 2)) -> SEGV
  131- wrong results for qfminim(A,,,2) if minimal norm < 1. E.g. A = matid(2)/2
BA132- besselk(0.001,1) -> SEGV
BA133- galoisinit(x).gen was not a t_VEC
  134- lngamma(10^1000) -> precision too low in truncr. Same for psi()
  135- nffactor could segfault. [#979]
  136- Mod(10,37)^10000000000 -> SEGV
  137- missing Flx_renormalize at the end of Flx_mulspec_basecase() &
       Flx_sqrspec_basecase() [#984]
  138- after \y0, [1,x]*[0,0]~ returned 0 t_INT, which should be a t_POL [#983]
  139- isprime(x) possibly incorrect on 64 bit machines when 10^15 < x < 2^64
LM140- fix for the documentation of deriv, intformal, poldisc and taylor.
JD141- fix for the documentation of install, matsnf and polsturm.
LM142- general documentation spelling fixes.
BA143- detection of exp2 and log2 was broken with C++
BA144- support for shared library on netbsd.
IZ145- [readline] 'foo)' + M-C-b -> infinite loop
  146- factorff / polrootsff : wrong result if t_FFELT coefficients
       in variable 'x
BA147- nfisideal did not reject invalid hnf ideal matrices [#999]
  148- v=vectorv(1);concat([matrix(0,0),v,v,v,v,v,v,v,v,v,v,v,v,v,v,v,v])
       -> SEGV [#1002]
BA149- minpoly([-5,0,-1,1;0,-5,-1,-1;1,1,-5,0;-1,1,0,-5]/3) 
       -> wrong result[#994]
BA150- 2/O(5) -> O(5^-1) (should raise an error) [#1009]
  151-  factor(13533236897) -> I/O Warning [#1012]
BA152- usqrtsafe result could be off by one.
BA153- faster algorithm for nfgaloisapply.
  154- bnfisnorm: output could have constant t_POL(MAXVARN) components
       instead of t_INT. E.g. bnfisnorm( bnfinit(x^2+10), 1690 )  [#1026]
IZ155- [OS/2] Fix warning about string signedness.
IZ156- [OS/2] Fix symbol checking in Configure.
BA157- upowuu(2,31) returned a wrong result [#1031]
BA158- [from 2.4.2] issquare(x^2+y^2) -> SEGV [#1027]
BA159- [from 2.4.2] pointers to Vecsmall components were broken.
BA160- [from 2.4.2] ellap could return a wrong result. [#1030]
  161- thue() could return wrong results (ZX_Z_normalize() didn't follow its
       documentation) [#1032]
  162- qfminim([1,2;2,1]*1.,,,2) -> SEGV [#1033]
  163- [doc] const_col, const_vec: typo in prototype [#1040]
BA164- precision(0.E100) returned an invalid object.
  165- nbits2nlong, nbits2prec, nbits2nchar : avoid overflow [#1037]
  166- normalization problems in RgX_Rg_add & friends, leading to t_POL
       with sign incorrectly set to 0, e.g. O(2)*x + 1 [#1042]
  167- t_FFELT + t_FRAC -> SEGV (missing case in gadd)
  168- polred(x) -> stack overflow [#1044]
  169- sign of t_POL whose coefficients were all equal to 0 was not always
       set to 0 (RgX_add / RgX_sub) [#1053]
  170- problems with p-adic gamma function :
       - remove extra digit in Morita's algorithm [ e.g. gamma(1/2+O(3^10)) ]
       - better threshold between Morita and Dwork's algorithm
BA171- qfbhclassno(x) was wrong for x<0
  172- subst(t_LIST,x,y) returned a copy without substituting [#969]
       substvec & substpol didn't work on t_LISTs
BA173- RETRY macro was incorrect and could cause crash [#1064]
BA174- factorpadic(,,,1) was actually using ROUND4 [#1064 again]
  175- nfbasis(x^2+1,,factor(-4)) --> oo loop [#1072]
  176- factorpadic: incorrect conversion from ZX to ZpX [#1073]
  177- bnfinit() : possible overflow in double -> long conversion [#1099]
  178- various inconsistencies in polinterpolate() [#1096]
  179- rnfequation() broken when called over the prime field Q [#1079]
BA180- F2x_divrem could call bfffo(0) which is not defined.
  181- remove restriction on forsubgroup / subgrouplist that cyclic factors
       of all p-Sylows should have less than 2^32 / 2^64 elements

    1- [libpari] prototype of gpmalloc, gprealloc [ return void * ]
    2- contfrac(x, b): no longer allow (undocumented) type t_MAT for b
BA  3- builtin-in GP functions can now be used as closures.
    4- allow nffactor(t_POL, t_POL), nfroots(t_POL, t_POL) [ necessary when
       nf.disc could not be factored and addprimes() would have to be used ]
    5- removed undocumented interface FpM_mul(x,y,NULL), and analogously for
       FpV_dotproduct, FpV_dotsquare, FpM_FpC_mul
    6- [library] major names cleanup; rename *lots* of functions:
       BSW_* -> BPSW_*
       Z_factor_limit -> Z_factor_until, auxdecomp -> Z_factor_limit
       assmat -> matcompanion
       certifybuchall -> bnfcertify
       derivpol -> RgX_deriv
       discf -> nfdisc, nfdiscf0 -> nfdisc0
       element_div -> nfdiv, element_divmodpr -> nfdivmodpr,
       element_mul -> nfmul, element_mulmodpr -> nfmulmodpr,
       element_pow -> nfpow, element_powmodpr -> nfpowmodpr,
       element_reduce -> nfreduce, element_val -> nfval
       factorback0 -> factorback2
       factorpadic4 -> factorpadic, factorpadic2 now static
       fundunit -> quadunit
       gcmp0 -> gequal0, gcmp1 -> gequal1, gcmp_1 -> gequalm1
       Flx_cmp1->Flx_equal1, F2x_cmp1->F2x_equal1, FF_cmp1->FF_equal1
       FF_cmp0->FF_equal0, FF_cmp_1->FF_equalm1
       ZX_cmp0 -> ZX_equal0
       gener -> znprimroot, ggener -> znprimroot0
       greffe -> RgX_to_ser (+ change prototype)
       hil0 -> hilbert, hilii -> hilbertii [ delete useless hil() ]
       ideal_two_elt* -> idealtwoelt*,
       idealhermite -> idealhnf
       initalg -> nfinit, initalgred -> nfinitred, initalgred2 -> nfinitred2
       initell -> ellinit, smallinitell -> smallellinit
       isfundamental -> Z_isfundamental
       ismonome -> RgX_is_monomial
       isunit -> bnfisunit
       matrixqz -> QM_minors_coprime
       matrixqz2 -> QM_ImZ_hnf
       matrixqz3 -> QM_ImQ_hnf
       minideal -> idealmin and change prototype
       mu -> moebius, gmu -> gmoebius,
       nfhermite -> nfhnf, nfhermitemod -> nfhnfmod, nfsmith -> nfsnf
       phi -> eulerphi, gphi -> geulerphi, phiu -> eulerphiu,
       poldeflate -> RgX_deflate_max
       polymodrecip -> modreverse
       powraw -> qfbpowraw, compraw -> qfbcompraw
       primedec -> idealprimedec
       racine -> sqrtint,
       regula -> quadregulator
       rename cmp_ZV -> ZV_cmp
       smith2 -> smithall, gsmith2 -> gsmithall
       srgcd -> RgX_gcd
       subfields0 -> nfsubfields,
       subres -> resultant, subresall -> resultant_all.
       torsell -> elltors and document it
       zideallog -> ideallog
       RgXQ_caract -> RgXQ_charpoly
       ZX_caract -> ZXQ_charpoly
       ZX_isirreducible -> ZX_is_irred
       pariputc -> pari_putc, pariputs -> pari_puts, pariflush -> pari_flush,
       gpmalloc -> pari_malloc, gprealloc -> pari_realloc, gpfree -> pari_free
       ordell -> ellordinate
    7- polvaluation -> RgX_valrem(x, pz) and no longer accept pz = NULL
       (use RgX_val). Same for ZX_valuation -> ZX_valrem [ & ZX_val ]
    8- rename u2toi -> uu32toi [ paste two 32-bit unsigned into a t_INT ]
       Write uutoi for the more natural operation of pasting two ulongs into
       a t_INT.
    9- prototype of FpX_center [ add one argument ]
BA 10- [svn/CVS] number development snapshots according to repository version
   11- delete CVS.txt and replace it with README-subversion
   12- syntax errors, SIGINT and "PARI bugs" are no longer trapped
   13- quadray no longer allows an (optional) 3rd argument
   14- 'format' was updated after each 'realprecision' change. Don't update
       if 'format' is Xm.-1 (show all significant digits).
   15- the algorithm used to round t_REAL for output
   16- the "minimum field width" component of the 'format' default is now
       ignored (was used only for integers in 'prettyprint' output mode and
       defaulted to 0 [no effect]). Use printf !
   17- %Z is no longer a valid conversion specification for PARI formats,
       since this is now handled as a length modifier. Use %Ps instead
       (P stands for PARI).
   18- remove the (ugly) prettyprint engine ('output' = 2), render as matbrute.
       printp / printp1 now act as print/print1
   19- pariprintf renamed to pari_printf, %Z conversion disappeared (use %Ps)
   20- check for small prime divisors in ispower [ large speedup ]
   21- the conversion style 'g' of the 'format' default now printfs in style
       'f' if the decimal exponent is < -4 ( was: if the binary exponent
       is < -32 ), in order to conform to standard printf specifications.
   22- [GMP kernel] enable GMP exact division
   23- matdetint: use less memory + faster finish
   24- change the default algorithm for mathnf(a) [ much faster ], flag 0 is
       no longer deprecated
   25- library/GP function galoisinit() now returns NULL/0 on failure
       (used to raise an exception)
   26- allow nfgaloisconj(t_POL, 1) [ cf C-4 ], never resort to nfgaloisconj(,2)
       [ slow, unreliable ] with default flag = 0
   27- [library]: gsub now implemented directly when typ(x) = typ(y)
BA 28- all LLL variants now use an implementation of NGuyen & Stehle's algorithm
   29- [library]: the "prec" parameter of floating point LLLs has disappeared
   30- Vecrev(x) now equivalent to extract(Vec(x), "-1..1") [was only for t_POL]
   31- allow t_COMPLEX as well as t_QUAD in ellpow
   32- we used to have Set(1) == Set("1") ( = ["1"] ). Now the latter returns
       ["\"1\""] (the Set whose element evaluate to the character string "1")
   33- plotinit: change the way default arguments are evaluated (omit, instead
       of interpreting 0 in a special way)
   34- nfbasistoalg / nfalgtobasis no longer accept t_VEC/t_COL/t_MAT,
       use matbasistoalg / matalgtobasis, which now also accept t_VEC/t_COL
   35- uniformize factornf and nffactor outputs (+ speed them up for
       non-squarefree inputs: compute valuations mod a suitable prime)
   36- treat Mat(t_LIST) as Mat(t_VEC)
   37- t_POL^0 always returned t_INT 1 [ try to return 1 in coefficient ring ]
   38- polresultant(x,y,,0) now chooses the best algorithm by itself
       [Ducos, modular, Sylvester], polresultant(x,y,,2) is now a synonym
       for the default. The change also improves poldisc().
   39- regression tests in src/test/in/ no longer need to end with
       'print("Total time spent: ",gettime)'
   40- arguments of stirling1 / stirling2 are now ulongs [ were longs ]
BA 41- user variables can now be aliased [#790]
   42- conjvec(POLMOD of INTMODs) was slow
   43- bnfcertify can now handle Zimmert/Minkowski bounds > 2^31
   44- moved misc/dico.new to src/whatnow + integrate it in the
       description system [ new script desc/whatnow ]
   45- bittest(x, n) no longer accepts t_VEC arguments n
   46- split library function disable_dbg() -> dbg_block() / dbg_release()
   47- make the semantics of substpol more precise and less surprising:
       substpol((x^2+x+1)/(x^2+x-1),x^2,x^3) -> (x^3 + x + 1)/(x^3 + x - 1)
       [ was: (x^6 - x^3 - 2*x - 1)/(x^6 - 3*x^3 + 1)  ]
   48- deprecated flag '2' for bnfinit [ don't compute units ] is now ignored
       ==> bnfunit becomes totally useless.
   49- the last component in prime ideals "primedec" format is a number field
       element, but no longer necessarily in t_COL form
   50- no longer allow ideals in *non-square* t_MAT form
   51- idealmin now returns a number field element, instead of the associated
       "principal idele"
   52- cleared up the confusion caused by PARI "ideles", which were remotely
       related to the mathematical notion, and covered two distinct uses. The
       first one (ideal + list of real places) is now called "divisor"; the
       second one (ideal + factorization matrix, which used to be a vector
       of logarithms of complex embeddings) is now called "extended ideal".
   53- Allow Scalar + t_COL: x + y returns [ y[1]+x, y[2],... ]. Consistent
       with RgC_Rg_add and RgV_isscalar, and allows linear algebra over number
       fields with less rigid data types (can mix freely t_COL, t_INT
       and t_FRAC, instead of converting everything to t_COL).
   54- Functions quadunit(), quadregulator(), and factor() no longer apply
       componentwise to vector / matrix arguments. Use apply()
   55- [libpari] removed obsolete 'prec' argument from prototypes of idealmul0,
       idealmulred, idealpow0, idealpowred, ideallllred, algdep, algdep0,
       lindep, lindep0
   56- factorback() no longer accepts an optional 3rd argument (nf). Use
       idealfactorback(). See also nffactorback().
   57- Extend polhensellift to work over unramified extensions of Q_p
       [ was Q_p only ]
   58- [libpari] changed prototypes of bnrdisc, bnrconductor, bnrisconductor
   59- slightly change the matrices used in idealmin (round them): the elements
       returned are a little different.
   60- no longer export private library function incgam2. Remove it also
       under GP when compatible = 3. Like incgam1 (suppressed), 1.39.15 doc
       stated it was provided "for debugging only".
   61- addhelp: TABs are now treated properly (would overflow line without
       wrapping) and \n are no longer ignored. No longer add a trailing '.'
       when missing.
   62- Useless nfinit flags 4, 5 (partial polred) removed.
   63- Split off inline functions unrelated to the kernel from
   64- Swap the order of the 2 arguments to select(): selection function
       now comes first [ as in apply() ]
   65- error() messages now prefixed with the customary *** [ used to be ### ]
   66- dvmdiiz(x, y, z) now expects z to be a t_INT [ to be consistent with
       all other xxxz functions where xxx includes only i,s,u arguments ]
   67- improved charpoly(,,2) [ Hessenberg form ]
   68- allow Flxq_mul and Flxq_sqr to call Flx_rem_montgomery
   69- t_POLMOD * t_POLMOD with same modulus: if all coefficients are in Z/NZ,
       call specialized functions FpXQ_mul / Flxq_mul [ analog with gsqr, gdiv,
       ginv, powgi ]
   70- bezout(): make sure the leading term of the gcd of 2 polynomials is positive
       (when it makes sense), as was already the case for gcd()
   71- mpcopy, Flv_copy, Flx_copy, vecsmall_copy have all become
       aliases for leafcopy.
   72- trap(,,foo) was actually equivalent to trap(,foo) changing the global
       exception handler, which was awkward an unintended
   73- norml2(t_POL) now returns the expected (square of) the standard L^2 norm.
       Use x * conj(x) to get back the old behaviour. norml2 now raises an error
       on t_POLMOD and t_FFELT components; used to add relative norms as in
        ? norml2([Mod(Mod(1,3)*x,x^2-2), 2])
        %1 = Mod(2, 3)
   74- [library] kernel functions involving a t_INT and a t_REAL now return a
       t_REAL, e.g. divsr(0, x) or mulir(gen_0,x) return real_0(...) [ used
       to return gen_0 ] ==> much better control of object types when writing
       kernel code. Generic functions (gmul, gdiv), as called from gp still
       return a result as precise as possible given the input: 0 * 1. --> gen_0
   75- [library] cleanup t_COMPLEX arithmetic to take advantage of real parts
       equal to a t_INT 0. Imaginary parts equal to 0 should never be created by
       our generic functions (so no need to cater for them specially: they
       will be very rare, produced by ad hoc routines).
       Special case trigonometric functions on pure imaginary arguments.
   76- kill(z) no longer destroys user variable, only resets them to their
       "undefined" value (as z = 'z would).
   77- [library] prototype of galoisconj [ add one argument ], and made it
       correspond to the default nfgaloisconj flag
   78- allow ordinary sorted vectors in set* functions [ sets are still t_VECs
       of t_STR, but if components can be directly compared, ordinary vectors
       are simpler and faster ]
   79- allow arbitrary nf entries in relative matrices; nfhnf and nfhnfmod
       return matrices whose entries may be t_INT or t_FRAC besides the 
       traditionnal nfalgtobasis form. Allow ideals in arbitrary form [was:
       necessarily HNF]
   80- linear algebra routines: determines first whether we are over Z/NZ
       then call specialized FpM_* routines if possible [fixes #376]
   81- [library] commented out a large section of pariold.h. Define
       PARI_OLD_NAMES to recover compatibility macros for old friends like
       'un' and 'lstoi'
   82- Mat(t_QFI or t_QFR) now returns the associated 2x2 symmetric matrix
   83- [library] rename Buchall -> Buchall_param and export a new Buchall
       with a simplified interface.
   84- trap() no longer allows installing default error handlers. 
   85- GP's break loop is now *enabled* by default [ set breakloop = 0 in your
       gprc to disable it ], and no longer controlled by trap(). To get out
       of a break loop, hit Return three times (next, return, break are no
       longer accepted)
BA 86- factormod and matker: faster linear algebra over F2.
   87- remove duplicate polynomials in polred output [#874]
   88- let forvec(X = v,...) respect the type of v (t_VEC or t_COL)
   89- polred: compute characteristic polynomials as in polredabs [ using
       complex embeddings, not ZX_charpoly ]
PMo90- algorithm for nfrootsof1 now defaults to nffactor: generically a little
       slower than qfminim, but safer and sometimes much faster (e.g. 1mn
       against a few hours)
   91- added a new component nf_get_roundG to the nf structure [ to speed up
       ideal reductions ]
BA 92- make test-xxx: trap SIGINT in benching script to exit on <C-C>
   93- removed optional flag to rnfconductor, use rnfisabelian.
   94- improved dirzetak() by an order of magnitude: e.g. K=nfinit(x^3-10*x+8),
       dirzetak(K, 10^6) from 4min (2.4.2) to 2.5s
   95- renormalize rnfkummer output so that it cannot be written as
       P(C * x)*C^(-deg P) for any integer C > 1  [ saves large powers of C
       in disc P ]
   96- added a flag to the (mostly useless) function rnfdedekind(), the
       version with the flag set is a little more useful. Allow list of prime
       ideals instead of single prime ideal, and make this list optional
       (omitted = test for maximality at ALL primes)
   97- the "zetakinit" format: bnf no longer included
   98- thueinit / thue: allow reducible and non-monic polynomials
   99- rnfdedekind: allow non-monic polynomials
  100- bnrclassno(bnr,id) : allow bid as well as modules for the 'id' argument.
  101- GP 'path' now also applies for file paths containing a '/' provided
       they do not *start* with a '/' (i.e. not an absolute path)
  102- [library mode] the function znlog now takes an extra "order" argument
  103- added an optional "order" argument to znlog, fflog, elllog, znorder,
       fforder, ellorder, whose preferred format is [ord, factor(ord)] and
       ord is the order of the group
  104- factor(t_INT/t_FRAC, lim) used to trial divide by primes up to 
       min(lim, primelimit). Now we trial divide up to lim and raise an error
       if lim > primelimit. [ Having the routine return an obviously "wrong" 
       result depending on an invisible parameter was not a good idea. ]
  105- factor(t_INT/t_FRAC, 1) was the same as factor(t_INT/t_FRAC, 0). Now
       abide by the input value and leave (..., 0) as the single special case 
       (shortcut for "the largest precomputed prime")
BA106- [native kernel] Schoenhage-Strassen multiplication/squaring
  107- factorff(A, p, T): make p & T optional if A has t_FFELT coefficients
BA108- [TLS] Change pari_thread calling convention
  109- allow x.a1, ..., x.a6 for an "ell5" x (5-component vector)
  110- removed 'primelimit' grom gp_data struct: we now print the actual limit
       of the primetable, not the value input by the user (which may be a
       little less)
BA111- listsort(L) no longer returns the list L: it now returns nothing.
       (No point in sorting in place if we must immediately copy the result.)
  112- allow component(t_VECSMALL,...) [#957]
  113- allow bestappr(x)  [2nd argument made optional]
BA114- GMP kernel chosen by default when GMP is available
BA115- Rename RgXQ_u_pow to RgXQ_powu
  116- Darwin: add -search_paths_first to LDFLAGS (try to solve the Editline
       / Readline conflict in a user-friendly way)
BA117- [enable-tls] Library soname changed to libpari[-gmp]-tls[-2.4].so.N.
  118- integrate a final polredabs in quadhilbertreal() 
BA119- Rename leftright_pow to gen_pow, leftright_pow_u to gen_pow_u and
       implement sliding window powering.
BA120- galoisapply now accept automorphisms in t_COL format.
  121- allow moduli equal to 0 in matsolvemod (was SEGV) [#947] + rigorously
       size-reduce the output in all cases.
  122- the bnr structure in a minor way (bnr[6] has 3 components now)
  123- cleaned up the code used by the GP evaluator to call PARI (and
       installed) functions. Functions can now have 20 arguments [#795]
BA124- galoisfixedfield now accept subgroups.
  125- ellap(E, p) second argument now optional if E has t_INTMOD or t_PADIC
  126- generalize the "generic pivot" strategy to all linear algebra (support
       RgM_solve and det() in addition to existing functions); implement
       maximal pivot strategy for p-adics [#1054]
BA127- padic_sqrt -> Qp_sqrt, padic_sqrtn -> Qp_sqrtn, gammap -> Qp_gamma
  128- rename rnfinitalg -> rnfinit
  129- [readline + vi-mode] h/H no longer clobbered by online help. 'h' will
       now act as expected (= 'move left one character')
  130- any of break / next / return now get out of the break loop debugger
       (as they used to in 2.3)
  131- typing <Return> thrice no longer gets out of the break loop : use break
  132- faster eta(,1), weber() and quadhilbert() [ rewrite using eta's
       functional equation explicitely ]
  133- checked that no 2-strong pseudoprime passes BSPW primality test up to
       2^64 (use Feitsma's list, extending Galway's)

    1- many new benches (make test-all)
    2- split up some large monolithic files: new files
       src/basemath/ RgV.c, FpV.c, ZX.c, ZV.c, concat.c, lll.c, hnf_snf.c
         prime.c, bit.c
       src/modules/ QX_factor.c, Hensel.c, DedekZeta.c
    3- split off module of general inline functions: src/headers/pariinl.h.
    4- Write or rename / document many convenience library functions:
       pari_calloc, cgetalloc
       mkfraccopy, mkquad, mkvecsmall4, absfrac, sqrfrac, mul_content, mul_denom
       roundr_safe, trunc_safe
       shallowextract, shallowconcat1, concat1,
       BPSW_psp & BPSW_isprime
       Z_smoothen, Z_ispower, Z_ispowerall
       Z_isanypower, chinese_coprime_Z, Z_chinese, Z_chinese_all,
       Z_chinese_coprime, Z_chinese_post, Z_chinese_pre, Z_incremental_CRT,
       Z_init_CRT, ZM_incremental_CRT, ZM_init_CRT, ZX_incremental_CRT,
       ZX_to_monic, ZX_primitive_to_monic, ZX_squff,
       ZX_gcd_all, nfgcd, nfgcd_all,
       RgX_disc, quad_disc, qfb_disc,
       ZpX_liftfact, ZpX_gcd, ZpX_reduced_resultant, ZpX_reduced_resultant_fast
       Fp_center, FpM_center, FpV_center
       Fp_ratlift, FpM_ratlift, FpX_ratlift
       Fp_red, FpXQ_red
       Flxq_add, Flxq_sub, FpXQ_add, FpXQ_sub, FqXQ_add, FqXQ_sub
       FqX_add, FqX_sub
       FqX_roots, FpX_factorff, FpX_rootsff
       FpXQX_div, FpXQX_rem, FpXQXQ_mul, FpXQXQ_sqr, FpXQXQ_pow
       FpXQXQ_inv, FpXQXQ_invsafe, FpXQXQ_div
       FqXQ_mul, FqXQ_sqr, FqXQ_pow, FqXQ_inv, FqXQ_invsafe, FqXQ_div
       ZC_ZV_mul, ZM_is_identity, ZM_copy, ZM_neg, ZM_add, ZM_mul, ZM_pow
       ZM_max_lg, ZM_sub, ZM_ZC_mul, ZXV_Z_mul, ZM_Z_mul, ZV_Z_mul, ZV_isscalar,
       ZV_copy, ZV_neg, ZV_neg_inplace ZV_togglesign, ZV_indexsort
       ZMrow_ZC_mul, ZV_ZM_mul, ZV_cmp0, ZV_content, ZV_equal,
       ZC_lincomb, ZC_lincomb1_inplace, ZC_z_mul,
       ZV_prod, ZV_pval, ZV_pvalrem zv_prod
       ZM_Z_divexact, ZC_Z_divexact, ZX_Z_divexact,
       ZM_charpoly, Flm_charpoly, Flm_hess
       Z_ZX_sub, ZX_Z_sub, Fp_FpX_sub,
       Flc_Fl_div, Flc_Fl_div_inplace, Flc_Fl_mul, Flc_Fl_mul_inplace,
       Flm_Fl_mul, Flm_Fl_mul_inplace, Flm_copy, Flm_mul, Flm_inage,
       Flv_Fl_mul_inplace, Flv_add, Flv_add_inplace, Flv_copy, Flv_dotproduct,
       Flv_sub, Flv_sub_inplace,
       Fl_order, Flx_nbfact_by_degree, Flx_roots_naive,
       FpV_inv, FpXQ_inv, FqV_inv,
       FpXY_eval, FpXY_evalx, FpXY_evaly,
       Flx_Fl_mul_to_monic, FlxqX_Flxq_mul_to_monic, FlxqX_rem,
       FlxqX_gcd, FlxqX_extgcd,
       FlxqXQ_mul, FlxqXQ_sqr, FlxqXQ_inv, FlxqXQ_invsafe,
       FpX_Fp_sub, FpX_Fp_sub_shallow,
       FpX_Fp_mul_to_monic, FqX_Fq_mul_to_monic,
       RgM_check_ZM, RgM_det_trianguar, RgM_isdiagonal,
       RgV_check_ZV, RgV_neg, RgV_add, RgV_sub, RgV_Rg_mul,
       RgC_neg, RgC_add, RgC_sub, RgC_Rg_div, RgC_Rg_mul,
       RgM_neg, RgM_add, RgM_sub, RgM_Rg_div, RgM_Rg_mul,
       RgC_RgM_mul, RgC_RgV_mul, RgM_RgC_mul, RgM_RgV_mul, RgM_mul, RgM_sqr,
       RgV_RgM_mul, RgV_RgC_mul, RgV_add, RgV_neg, RgV_sub, RgC_Rg_add
       RgM_diagonal, RgM_diagonal_shallow, RgM_inv, RgM_solve,
       RgM_mulreal, mulreal, RgX_RgM_eval
       RgV_sum, RgV_sumpart, RgV_sumpart2
       RgX_neg, RgX_add, RgX_add_shallow, RgX_sub, RgX_Rg_add, RgX_Rg_sub,
       Rg_RgX_sub, RgX_equal, RgX_equal_var, RgX_translate,
       RgX_to_nfX, RgM_to_nfM, RgC_to_nfC,
       RgX_type, RgX_type_decode, RgX_type_is_composite, RgX_Rg_divexact,
       RgXQ_norm, RgXQ_pow, RgXQ_caract, RgXQ_reverse
       RgXQX_translate, RgXQV_to_mod, RgXQXV_to_mod
       RgXQX_pseudorem, RgXQX_pseudodivrem,
       RgX_check_ZX, RgX_check_ZXY, RgX_pseudodivrem, RgX_pseudorem,
       RgX_recip, RgX_recip_shallow,
       ZC_hnfrem, ZC_hnfremdiv, ZM_det_triangular, ZM_detmult, ZM_equal, ZM_hnf,
       ZM_hnfall, ZM_hnfcenter, ZM_hnflll, ZM_hnfmod, ZM_hnfmodid,
       ZM_hnfmodall, ZM_hnfrem, ZM_hnfremdiv, ZM_hnfperm, ZM_snf, ZM_snfall,
       ZM_snfall_i, ZM_snf_group, ZM_snfclean
       ZM_lll, ZM_lll_norms, hnfmerge_get_1,
       ZXY_max_lg, ZX_copy, ZX_equal, ZX_max_lg, row_Flm, row_zm,
       scalar_ZX, scalar_ZX_shallow, deg1pol, deg1pol_shallow
       togglesign_safe, setabssign,
       zero_Flm, zero_Flv, zero_zm, zero_zv, zm_copy, zv_cmp0, zv_copy,
       zv_equal, zv_content, zx_renormalize, 
       identity_perm, cyclic_perm, perm_mul, perm_commute, perm_inv, perm_pow,
       cyc_pow_perm, cyc_pow, perm_cycles, perm_order, vecperm_orbits
       RgX_get_0, RgX_get_1,
       resultant, resultant_all, QX_disc, QX_resultant,
       lllfp, lllintpartial, lllintpartial_inplace, reducemodlll,
       reducemodinvertible, closemodinvertible,
       galoisinit0, get_nfpol, get_bnfpol, get_prid,
       bnf_get_nf, bnr_get_bnf, bnr_get_bid, bnr_get_mod, bnr_get_nf
       nf_get_r1, nf_get_r2, nf_get_roots, nf_get_sign, nf_get_roots,
       nf_get_M, nf_get_G, nf_get_roundG,
       nf_get_Tr, nf_get_TrInv, nf_get_disc, nf_get_index, nf_get_pol, nf_get_zk
       nf_get_prec (was nfgetprec), nf_to_scalar_or_basis, nf_to_scalar_or_alg
       nf_to_Fq_init, nf_to_Fq, Fq_to_nf, zkmodprinit, zk_to_Fq_init, zk_to_Fq,
       nfM_to_FqM, FqM_to_nfM, nfX_to_FqX, FqX_to_nfX
       zk_multable, zk_scalar_or_multable, multable, tablemul, tablemul_ei,
       tablemul_ei_ej, tablemulvec, tablesqr, ei_multable.
       nfordmax, nfarchstar (was zarchstar), nfadd, nfsign, nfnorm, nftrace
       nfsign_arch, nfsign_units, nfsign_from_logarch, Buchquad, Buchall,
       Idealstar, idealaddtoone_i, idealcoprimefact,
       nfinvmodideal, nfpowmodideal, idealsqr, nfpow_u
       bnrisconductor0, bnrdisc0, bnrconductor0,
       bnrsurjection, ABC_to_bnr, idealred, idealred0 (was ideallllred),
       idealred_elt, idealred_elt0
       ellinit_padic, ellinit_real, ellinf, ell_is_inf, ell_is_padic,
       ell_is_real, checkerr_real, checkell_padic, checksmallell, checkell5,
       trueeta, exp_Ir, roots_from_deg1, deg1_from_roots
    5- [libpari] public generic hashtables
    6- library functions sqrr and invr [ Newton inversion, called by ginv() ]
BA  7- library functions checkgroup, galois_group, cyclicgroup, dicyclicgroup,
       abelian_group, group_domain, group_elts, group_order, group_isabelian,
       group_abelianHNF, group_abelianSNF, group_isA4S4, group_leftcoset,
       group_rightcoset, group_perm_normalize, group_quotient, quotient_perm,
       quotient_group, quotient_subgroup_lift, group_subgroups,
       groupelts_abelian_group, groupelts_center, group_export, group_ident
    8- library functions pr_get_p, pr_get_gen, pr_get_e, pr_get_f, pr_get_tau
       to access components of prime ideals
BA  9- handle numerical derivation as an operation on closure.
RB 10- GP functions printf, Strprintf
   11- pari_printf, pari_fprintf, pari_sprintf, pari_vfprintf, pari_vprintf,
BA 12- docpdf and install-docpdf targets (toplevel Makefile)
JD 13- add an optional argument to quit()
   14- universal constant gen_m2, for symmetry
   15- GP function version() [ current version number ]
BA 16- [ellap] Port of SEA algorithm from the ellsea GP package
BA 17- new alarm GP function and alarmer error code
RM 18- partitions()
   19- New chapters in Libpari Guide: usersch6.tex, usersch7.tex
   20- library function dbg_pari_heap
   21- function bnfcompress() [ to create a "small bnf" from a true
       bnf, to be recoved using bnfinit ]. More consistent than old
       bnfnit(,3) / bnfmake.
   22- a concept of "extended ideal" [I, t], where t is an algebraic number
       (possibly in factored form). The pair represents the ideal I x (t)
       In applications the norm of I stays bounded for a given base field,
       and t keeps track of the "principal part" of the ideal (usually in
       factored form to avoid coefficient explosion).
   23- public interface to forsubgroup: traversesubgroups()
   24- library function bnfisprincipal0 (with new public flags, see nf_GENMAT)
   25- GP functions nffactorback / idealfactorback
JD 26- GP function warning()
   27- new flag to charpoly [ integral matrix, modular algorithm ]
BA 28- GP function galoisisnormal()
BA 29- F2x functions family for polynomials over GF(2) and 
BA 30- t_FFELT subtype_FF_F2xq for GF(2^n)
BA 31- F2v/F2m functions family and F2m_ker for linear algebra over GF(2)
BA 32- extra debugging data in t_CLOSURE and debugging facility.
BA 33- compile-time copy optimizer
BA 34- elliptic discrete logarithm function elllog()
BA 35- direct implementation of ZX_mul, ZX_sqr using Kronecker's trick + mulii
   36- rnfisabelian GP function
   37- default 'recover'
   38- more possibilities to draw "random" elements in natural sets using
       random(), e.g. finite fields, elliptic curve over finite field.
   39- GP routines nfeltadd, nfelttrace, nfeltnorm
BA 40- Pollard rho discrete logarithm algorithm (function gen_Pollard_log)
   41- GP routine polrootsff
   42- matadjoint: implement division-free algorithm (flag = 1) [#937]
BA 43- GP routines and PARI functions ellweilpairing, elltatepairing and
BA 44- FpE functions family for points on E(F_p)
BA 45- GP routine galoisgetpol and PARI function galoisgetpol, galoisnbpol
BA 46- GP routine and PARI function elldivpol
BA 47- GP routine and PARI function ellmodulareqn
BA 48- function RgXQ_ratlift for reconstruction of rational functions.
   49- optional flag to bnfcertify : only check that the correct class group
       is a quotient of the computed one.
VB 50- mingw support
VB 51- plotwin32 graphic engine
   52- plotQt4 graphic engine
BA 53- low-level accessors functions gal_get_* for galoisinit objects
   54- libpari functions cvstop2, z_lval, z_lvalrem, z_pvalrem
   55- GP function externstr()
   56- library function ZC_reducemodmatrix, ZM_reducemodmatrix,
       ZC_reducemodlll, ZM_reducemodlll
BA 57- libpari functions vecsmall_max and vecsmall_min
BA 58- GP functions idealfrobenius and idealramgroups
BA 59- library functions Zn_sqrt, Zn_issquare
   60- library function gidentical
BA 61- GP operator === that use gidentical
   62- GP function sumdedekind()
JD 63- [gphelp] support for bzip2 compressed documentation.

    1- obsolete GP functions printp, printp1. Either replace them by
       print / print1 [ or the new printf ], or define aliases
       alias(printp, print); alias(printp1, print1)
    2- obsolete GP functions bnfclassunit, bnfreg, bnfclgp, bnfunit.
       Use bnfinit.
    3- obsolete GP functions bnrclass. Use bnrinit or bnrclassno.
    4- obsolete GP function idealprincipal. Use number field elements "as is"
    5- obsolete GP function ideleprincipal. No routine remains that would
       use the auxiliary "archimedean information"
    6- obsolete library functions extract and matextract
    7- obsolete optional argument to quadhilbert(D < 0)
    8- unused undocumented library functions os_open/os_read/os_close
    9- obsolete README.DOS and README.WIN
   10- cant_deflate, elliper1, lllger3, varer1, obsoler, infprecer, errlg,
       errexpo, errvalp, rtodber, affer2, primer2, siginter error codes
   11- obsolete library function bruteall
   12- useless undocumented library function gkrogs (use krois)
   13- obsolete library functions roots2 and rootsold are no longer public
   14- useless library function isnfscalar
   15- obsolete undocumented library function factpol(), lift_to_pol()
   16- library function combine_factors() is no longer public
   17- obsolete undocumented library function rnfdet0, rnfdet2
   18- obsolete library function discsr(). Use RgX_disc (or quad_disc, qfb_disc)
   19- obsolete library function element_powmodidele() [use element_powmodideal
       + set_sign_mod_idele], ideleaddone, reducemodmatrix, nfreducemodidele,
       nfreducemodideal, nfreducemodideal_i, elementinv_modpr
   20- useless macros gaddgsz, gaddsgz, gdiventgsz, gdiventsgz, gdivgsz,
       gdivsgz, gmaxgsz, gmaxsgz, gmingsz, gminsgz, gmodgsz, gmodsgz, gmulgsz,
       gmulsgz, gsubgsz, gsubsgz, gachz, gacosz, gashz, gasinz, gatanz, gathz,
       gchz, gcosz, gcotanz, gexpz, ggamdz, ggammaz, glngammaz, glogz, gpsiz,
       gshz, gsinz, gsqrtz, gtanz, gthz, gzetaz, gmaxz, gminz, TRgopgz,
       mpfloorz, mptruncz, mpdvmdz
   21- obsolete library function gmillerrabin, gpolcomp, caradj0
   22- obsolete library functions allbase, base, base2, factoredbase, smallbase,
       discf2, factoreddiscf, smalldiscf. Use nfbasis0 / nfdisc0 / nfmaxord
   23- obsolete library function pari_rand31  [ use pari_rand ]
   24- obsolete undocumented library function bruterr
   25- obsolete library function smallbuchinit
   26- awkward flag '3' for bnfinit. Use bnfcompress().
   27- badly named bnfmake. Use bnfinit(sbnf).
   28- useless component v[6] in "small bnfs" (was 'different', is 0)
   29- obsolete library functions buchray, buchrayinit, buchrayinitgen:
       use Buchray.
   30- obsolete library function smallfact [ use boundfact or Z_factor_limit ]
   31- obsolete library function gracine [ use sqrtint ]
   32- obsolete library function ispsp, gispsp. Use ispseudoprime or BPSW_psp.
   33- obsolete library function gregula, gfundunit, gboundfact.
       Use quadregulator, quadunit, boundfact
   34- obsolete library functions ideallistunit, ideallistunitgen,
       ideallistzstar, ideallistzstargen. Use ideallist0.
   35- obsolete library function algdep2. Use algdep0 (same arguments).
   36- obsolete library function Mod0. Use gmodulo.
   37- obsolete undocumented library function poldvd. Use
       RgX_divrem(x,y, ONLY_DIVIDES)
   38- obsolete library function kerint1. Use kerint or ZM_lll(,0.99,LLL_KER)
   39- header file paritype.h [ split between parigen.h and pariinl.h ]
   40- obsolete library functions sor, outbrute, outbeaut
   41- dangerous macros max & min [ use maxss/minss, maxuu/minuu, maxdd/mindd ]
   42- deprecated global constants gi, geuler, gpi. Use
       mulcxI/mkcomplex/gen_I(), mpeuler() and mppi().
BA 43- bitvec family function. Use F2v instead.
BA 44- useless prototype code 'S'. Use 'r' instead.
BA 45- useless function delete_named_var.
   46- obsolete and dangerous switch_stack() [#1013]

Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux1.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux1.fr/  [PARI/GP]