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
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

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