Karim Belabas on Wed, 28 Mar 2007 19:26:11 +0200

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

pari-2.4.1 released (UNSTABLE, ALPHA)

Dear PARI lovers,

I would like to announce the release of pari-2.4.1-ALPHA. The sources
and a binary for Windows can be obtained through the address


This is partly a bugfix release for the UNSTABLE development branch.
But, since no major problem has been reported about the "risky" improvements
in 2.4.0 [ guaranteed 'bnfinit' bounds, new random number generator,
partial multithread support ], we carry on and include a cleanup
of the existing finite fields code, necessary for further
implementations (Bill Allombert). Please help us test this ALPHA release !

Next development release will include Bill's parser, based on the gp2c

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



   * New GP functions and a new GP type to handle non-prime finite fields
     in a reasonably efficient way [ while paving the way for more efficient
     implementations, to come later ]: ffgen, fflog, fforder, ffprimroot...
     ? T = ffinit(7,5); \\ irreducible of degree 5 in F_7[x]
     ? t = ffgen(T); \\ The element x mod (T,p) in Fp[x] / (T) ~ F_{7^5}
     %2 = x  \\ this has type t_FFELT
     ? t^10 \\ handled like Mod(x, T) but much faster, and less cumbersome
     %3 = 5*x^4 + 5*x^2 + 5*x + 6 
     ? fforder(t) 
     %4 = 5602  \\ multiplicative order
     ? g = ffprimroot(t); \\ primitive element
     ? fflog(g^1000,g)
     %6 = 1000

   * The Windows binary now uses the GMP (faster) multiprecision kernel.

   * Note that pariemacs is no longer distributed with PARI/GP. The "PARI
     Emacs shell" will be made available as a separate package, to be
     downloaded once if at all [ older pariemacs installations should
     still function properly with the new gp ]

Have fun,



P.S: The Changelog.

Done for version 2.4.1 (released 28/03/2006):
    1- qflll / qflllgram (t_MAT with t_FRAC entries) would not reduce to the
       integer case (--> insufficient precision, SEGV) [#505]
    2- [Cygwin] missing -L... -lgmp when compiling with gmp.
    3- ispower(522^3) -> 0 [ looked like a 7th power to is_357_power(), which
       then forgot to test for cubes ] [#506]
LGr 4- [gphelp] race condition --> incomplete cleanup (improved patch BA)
    5- Cleanup library linking: do not link libpari with -ld [only gp], do
    not link gp with -lgmp [only libpari]. Side effect: libgmp.so no longer
    needed for modules compiled by gp2c-run
    6- when nf.disc < 0, nf.diff was an incorrect PARI ideal [#510]
    7- nf.codiff was only correct up to multiplication by some rational number
       (a divisor of nf.disc) [#510]
    8- inaccuracy (>= 2ulp) in [cached] log(2) [#498]
    9- exp, sinh, asinh, tanh, atanh were inaccurate near 0
   10- [GMP kernel] forvec(x=[[-1,0]],print(x)) --> error [#509]
       [ 'resetloop' failed when passing through '0' ]
   11- nfbasistoalg(nfinit(y),x) created an invalid t_POLMOD
   12- incorrect result in ZX_resultant (accuracy loss in bound computation)
   13- bnfinit(): avoid further precision problems for large degree fields
   14- [Configure] gcc-specific flags were used on linux/freebsd/cygwin, even
       when __gnuc__ was unset
   15- factor( pure power FqX ) --> SEGV
   16- [GMP kernel] polrootsmod(f, 4) --> wrong result [ low level t_INT
       manipulation not using the int_* macros ]
   17- polrootspadic(f, 2, r) --> some roots would be found twice [ due to
       FpX_roots(f, 4) called ]  [#521]
   18- ??sumalt doesn't compile: in GPHELP, treat \ref in verbatim mode [#518]
   20- matinverseimage returned [;] when no pre-image exists. Conform to
       the docs: "an empty vector or matrix", depending on the input types.
   21- [Configure] abort when $CFLAGS is not supported by $CC
   22- 3.5 % 2 --> error [ should be 0.5 ]
   23- sin(1/10^100) --> 0e-28 [ also affected cos,tan,cotan ]
   24- fix e.eta and elleta such that e.eta = 2 ellzeta(e,e.omega/2)
       [ was ellzeta(e,e.omega/2) ]. COMPAT.
   25- elleta(e) was different from elleta(e.omega). Analogous problems
       in all quasi-elliptic functions. COMPAT: change e.omega so that
       e.omega[1] / e.omega[2] belongs to the Poincare half plane [ used
       to be the inverse ]. Together with 24: the Legendre relation now reads 
       w1 e2 - w2 e1 = 2 I Pi
       Rationale: 1) the action of Sl_2(R) becomes the standard one, not a
       twisted one 2) fixes quite a few normalization problems in our code.
   26- check that k >= 0 in thetanullk [#531]
   27- isprime(-2,1) returned 1
   28- Fix 'Not enough precision in thue' error
BA 29- [OS X] Fix kernel detection on x86_64-darwin
   30- Remove "VERY long time" Warning in bnfcertify (few minutes nowadays)
BA 31- missing prototype for documented function ZY_ZXY_rnfequation
   32- sqrt(x^2/y^2) --> SEGV [#536]
   33- \r foo no longer worked if foo was a directory and foo.gp a valid
       input file [#540]
BA 34- [Configure] spectacular failure to recognize gcc under some locales.
   35- polredabs(x^8+2*x^6-5*x^4+78*x^2+9) was incorrect [ missed
       x^8+6*x^6-x^4+54*x^2+25 due to incorrect "skipfirst" ]   [#542]
   36- typo in resmod2n (both kernels) [#546]
   37- At \p28, 0.1 - 0.1 would return 0.E-30 instead of 0.E-29
BA 38- missing prototype for documented function FpX_div_by_X_x
   39- isprime(,0) very slow when primelimit is large [#546]
   40- nfmodprinit could create FpX's which were not reduced mod p
   41- O(x^3)^(1/2) was O(x^2) instead of O(x)
RB 42- the following TODO item:
       v = vector(2); v[1] = v = 0  --> SEGV. Occurs with high probability if
       any variable is "deleted", while it (or part of it) is still in use
       Reference count could be helpful here.
   43- substpol(x^-2+O(x^-1),x^2,x) --> error [#555]
BA 44- [TLS] addss, addsr and subsr were not reentrant.

    1- concat(t_VECSMALL, t_VECSMALL) to return the concatenated vector
       [was: a vector with two t_VECSMALL entries]
    2- pariprintf() so that it handles t_STR as print() [ don't include quotes ]
LGr 3- [Makefile] make generated src/funclist independent of locale
    4- Extend Pocklington-Lehmer to the case N-1 = FU, F > N^(1/3)
BA  5- Much faster base-2 to base-10 conversion.
BA  6- FpX_Fp_add() is now clean.
BA  7- rename ZY_ZXY_resultant -> ZX_ZXY_resultant, ZY_ZXY_rnfequation ->
       ZX_ZXY_rnfequation and FpY_FpXY_resultant -> FpX_FpXY_resultant.
BA  8- FpV_polint() now take a variable number as last parameter.
    9- use Miller-Rabin-like improvement in znprimroot and FpXQ_gener
   10- indexrank, indexsort and indexlexsort now return t_VECSMALLs
   11- API for gen_sort, vecsort

BA  1- derivnum(x=a,expr) for numerical derivations
BA  2- library function strntoGENstr
    3- function Vecrev
BA  4- ppc64 level0 inline assembly kernel
    5- library function floor_safe()
    6- library function itostr()
BA  7- library function Fp_div(), Fp_mul()
BA  8- library function FpXQ_norm()
BA  9- library functions FlxX_resultant() and Flx_FlxY_resultant()
BA 10- library function FlxY_Flx_div()
BA 11- library function Flm_transpose()
BA 12- library function Flx_Fl_add()
BA 13- library function Flxq_div()
BA 14- function stirling (Stirling numbers of 1st and 2nd kind)
BA 15- library function FpX_valrem()
   16- library function Flxq_gener
BA 17- library function Flxq_norm, Flxq_minpoly, Flxq_charpoly
BA 18- [toplevel benchmark] ffisom
BA 19- library functions Fp_order, FpXQ_order, FpXQ_log, FpXQ_sqrtn, 
       Flxq_order, Flxq_log, Flxq_sqrtn 
   20- indexrank, indexsort and indexlexsort now return t_VECSMALLs
   21- library functions gen_sort_inplace, gen_indexsort, sort_factor,

    1- obsolete functions readexpr(), readexpr_nobreak() 
    2- pariemacs support from Configure
    3- obsolete functions sindexsort, sindexlexsort, sindexrank
Karim Belabas                  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-bordeaux.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]