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 http://pari.math.u-bordeaux.fr/download.html 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 effort. See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems or submit wishlist items. =========================================================================== HIGHLIGHTS: * 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... E.g: ? 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 etc. * 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, Karim. =========================================================================== P.S: The Changelog. Done for version 2.4.1 (released 28/03/2006): Fixed 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. Changed 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 Added 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, indexvecsort Removed 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]