Karim BELABAS on Thu, 20 Oct 2005 12:50:02 +0200

 pari-2.2.11 released

Dear PARI enthusiast,

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

While this is still an ALPHA release of the PARI/GP system, the code is
stable enough for widespread testing. I plan one last alpha release
(moving towards thread safety, and bug fixes) before the end of the
2.2 development cycle, hopefully before the end of the year. Please
test and report problems in 2.2.11, we need your help ! Please also
report documentation problems.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Highlights:
===========

* new Elliptic Curve functions ellsearch(), ellidentify(), for use with
John Cremona's database [ in his new format ].

? E1 = ellinit([0,0,0,0,16]);   \\ rank 0, not a minimal model
? ellidentify(E1)
%2 = [["27a3", [0, 0, 1, 0, 0], []], [2, 0, 0, 4]]

? E2 = ellinit([0,0,1,-7,6]);   \\ rank 3, minimal model
? ellidentify(E2)
%4 = [["5077a1", [0, 0, 1, -7, 6], [[-2, 3], [-1, 3], [0, 2]]], [1, 0, 0, 0]]

? ellsearch("11a1")             \\ individual curve
%5 = ["11a1", [0, -1, 1, -10, -20], []]

? ellsearch(11)                 \\ curves of conductor 11
%6 = [["11a1", [0, -1, 1, -10, -20], []], ["11a2", [0, -1, 1, -7820, -263580], []], ["11a3", [0, -1, 1, 0, 0], []]]
[ you need the 'elldata' package from the download page to enable
this feature ]

* polgalois() identifies groups in a more readable form, as in:
? polgalois(x^6-2)
%1 = [12, -1, 1, "D(6) = S(3)[x]2"]

? polgalois(x^11-x-1)
%2 = [39916800, -1, 8, "S11"]
[ you need the new 'galdata' package from the download page to have
this feature turned on for polynomials of degree 8 - 11 ]

* extensive retuning of MPQS (faster integer factorization).

* new function substvec() for parallel substitutions

* new function readvec() to read in data files, e.g let 'file' contains
the following lines:

1
2
3

%1 = [1, 2, 3]

* better TeX output.

* general cleanup in libpari: removal of almost all typecasts, many
internal functions documented, better function names (see the libpari
user manual for the "new style" of PARI programming)

* a gp2c release is forthcoming, supporting new GP functions, e.g. default.

Have fun !

Karim.

P.S1: Known problems, none of which are likely to affect ordinary users, are
listed in our Bug Tracking System at

http://pari.math.u-bordeaux.fr/cgi-bin/pkgreport.cgi?pkg=pari

Bugs will be reported there as they are found. Note that pari-2.1.7 (stable),
whose focus is stability of previously working code, is slower and, to our
knowledge, less robust than the present release.

P.S2: The Changelog:

Done for version 2.2.11 (released 19/10/2005):
Fixed
1- a()=b(1,) --> error message
2- agm(-1.0000000004656,1) --> oo loop [Bug #214]
3- sdivss_rem(x,y,&rem) did not set rem, contrary to the documentation
BA  4- ellzeta(ellinit([0,0,0,0,1]),1) --> gerepile error
5- random() was less random on 64 bit machines
6- typing 0.e-28 returned 0.E-38 (!)
7- ellminimalmodel(e).a2 was not always in {-1,0,1}
8- check arguments in elllocalred
BA  9- [GP2C] type-checking codes generated for some types was wrong.
10- stray output: (a()= for(i=1,1, return);) a() --> 0
11- qfminim & qfrep didn't check their arguments
12- [library:] pariputsf() and GP print() used different output formats
13- nfdisc(x^4 - 2947*x^2 + 1553545) --> SEGV  [ incorrect test for gcd
in Round 4: gcmp1(d) --> degpol(d) == 0 ]
14- forvec(v=vector(4,k,[1,4]),,2) -> oo loop [bad initialization]
15- eta(x << 1) used far too much accuracy in intermediate computations
GN 16- MPQS warning "factoring this number will take several/many hours" now
assume more current hardware.
17- off-by-1 error in initprimes0 allocation [Bug #237]
-> SEGV in default(primelimit,155100 + 41*7)
18-[Cygwin] incorrect links created by 'make install'
19- a( <Return> --> oo loop in parser [Bug #240]
20- at \p366, the last digits of Pi were wrong [ not enough iterations, from
2.2.9, A-2]. [Bug #238]
GTo21- wrong prototype for qfrep
22- factornf(P, T) did not accept non-monic T [Bug #241]
23- lngamma(1E+10) --> "Impossible assignment I --> S"
24- "couldn't deal with this field" errors in bnfinit/quadclassunit for
tiny discriminants, huge Bach constants (e.g. 12), and unlucky random
seeds. Remove arbitrary limits and let the loop run to completion.
25- neither freadseq() nor readGEN() were able to parse '{' / '}' [Bug #216]
26- accuracy problem in polroots (--> division by zero) [Bug #252]
27- acos(x < 0) --> result off by Pi [ introduced in 2.2.9-A3 ]
27- ellrootno(e,p) incorrect in the case of good reduction [#262]
28- (rare) "impossible assignment I-->I" in contfrac
29- typo in qfbclassno's hash function (when D < 0, function can't handle 0).
qfbclassno(-948) --> division by 0 [GMP kernel]
30- [Makefiles:] the behaviour of '//' as path leader is undefined. Make
sure path prefixes are not '/' [ e.g $prefix/lib --> //lib ] 31- pollead(u*v + (v+1)/v, v) --> 'x' [ should raise an error ] GN 32- problems in MPQS : some factors missed e.g factor(2^263-9) --> expensive extra runs ( + possible stack corruptions when many factors found simultaneously ). 33- tanh(x) was actually computing tanh(|x|) for real x ([#269] from 2.2.8) 34- [MacOS X] dlopen is now part of the system library. Don't redefine dlopen in darwin.c if HAS_DLOPEN is defined. 35- fix Trager's trick in factorff (from 2.2.10) 36- rnfisnorminit(quadpoly(145,y),quadray(145,1)) --> stack overflow [#273] 37- matker([1,2,3;4,5,6]*1.) --> [;] (missing 1 vector) 38- rnfconductor(bnfinit(y),x,1) --> error [#277] 39- gcc-4.0 miscompiles PARI on ix86 [#274] ( http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23453 ) 40- truncate(1/4/x+1+O(x)) -> (x + 1/4)/x instead of (4*x + 1)/(4*x) [#276] 41- bitneg(2^32-1,32) -> corrupt integer [#279] 42- typo in rnf_is_abelian [#277] GN 43- several minor fixes in mpqs.c BA 44- ellrootno(e,2) was wrong for curves of Kodaira type 3 and -7. ([#212] from 2.2.9) BA 45- galoisfixedfield() was not robust enough ([#256, #228 from 2.2.9) 46- tanh(-10^20) --> error instead of -1 [tanh(10^20) was treated properly] BA 47- wrong rounding in wr_float: with default(format,"f0.10") 1.23456789049999999997 -> 1.234567891 GH 48- typo in thue.c:MiddleSols() --> missing solutions [#264] 49- default(prettyprinter,,1) --> t_POL instead of t_STR [#296] BA 50- truncate(1/x+O(x)) --> SEGV 51- overflow in Flm_gauss (when solving triangular system) --> wrong result [#284] 52- isprime(25, 2) *** impossible inverse modulo: Mod(5, 25). although it's useful to get a factor, it's not nice to raise an error, since 'trap' then becomes mandatory. Removed this feature: the factor is silently discarded (exceedingly rare anyway). 53- (-1)^(any integer >= 2^31) --> -1 [ from 2.2.9 ] GH 54- zncoppersmith(x,1002,1001) --> SEGV [#221] 55- subst(1+O(x),x,x^2+O(x^3)) --> SEGV [#287] (patch by MSo) subst(1+O(x^2),x, x^2+O(x^3)) --> 1 + O(x^3) [ should be O(x^4) ] 56- component() didn't work on lists [ SEGV ] 57- quadclassunit(D,, [c0 > 6]) --> weird error message 58- weird errors in bnrstark [#285] 59- (x^0)^2^31 --> length overflow 60- polroots(pollegendre(51),1) --> SEGV [#293] 61- print({}) --> oo loop BA 62- when choosing between (p-1) and APRCL, isprime() required a complete factorization of p-1, whereas accumuluting factors up to sqrt(p-1) was enough. (e.g 2^127 - 1) BA 63- function name not always properly reported on interrupt (e.g if, while) 64- content([-1]) --> -1 65- memory leaks in quadclassunit (#318) BA 66- [Configure] check that 'readline' is not an EditLine wrapper [ ==> compilation failure otherwise ] 67- Str() --> junk string (uninitialized data) (#326) 68- arg(I*O(7^5)+1) --> junk, exp(3*I + O(3^5)) --> junk. (#328) 69- powiu(2, ulong n) called int2n(long n), incorrect for huge n (#331) 70- Qfb(8,-4,1)*Qfb(5,-4,1) --> Floating Point Exception (BIB, #332) 71- t_QRF distance component was evaluated using an unstable algorithm, possibly leading to catastrophic cancellation (#333) 72- dbltor did not recognize Infinity, NaN, or unnormalized numbers. 73- makerfrac(1,quadgen(24)*x^0)%b --> SEGV, where GEN makerfrac(GEN p,GEN q) { GEN z=cgetg(3,t_RFRAC); z[1]=lcopy(p); z[2]=lcopy(q); return z; } BA 74- exp(x) gave imprecise results at huge accuracies for expo(x) >> 1. 75- valuation(x,p) using a divide & conquer algorithm would kill the session if p = 1 76- (2 + O(2^8))^(-1/3) --> SEGV [#341] 77- exp(0.E100) --> invalid GEN 78- stack corruption in gsubst [#343] 79- Pol([Mat(0.1)],x)^3. --> crash [#346] 80- besseljh(0,2^65) --> crash [#340] BA 81- [plotQt:] ^C while hi-res window is present would crash the session 82- Strtex(Vecsmall) --> SEGV [#348] 83- infinite loop in zeta() [catastrophic cancellation in get_xinf() ] 84- infinite loop in nfdisc() [#350] 85- Mod(1,2)*x / (1/2) --> incorrect t_POL 86- qfbsolve forgot some solutions: qfbsolve(Qfb(2,1,3),3) --> 0 87- multiplying ideals could lead to factoring big integers (failsafe algorithm in idealtwoelt, when random trials don't work): fix idealtwoelt. Changed BA 1- FpM_FpV_mul is renamed to FpM_FpC_mul, Flm_Flv_mul to Flm_Flc_mul and FlxV_to_ZXC to FlxC_to_ZXC, Flv_to_ZC to Flc_to_ZC, FqV_to_FlxC to FqC_to_FlxC, zv_to_ZC to zc_to_ZC BA 2- FpXV_FpV_innerprod renamed to FpXV_FpC_mul and FlxV_Flv_innerprod to FlxV_Flc_mul 3- retain 'CHANGES' revision after 'make distrib' GN 4- extensive re-tuning in MPQS (all sizes) and avoid "sizing marginal, index1 too large" warning 5- rename globalreduction -> ellglobalred, localreduction -> elllocalred 6- taniyama(e) is deprecated. Use elltaniyama(e, prec) instead of old = precdl; precdl = prec; x = taniyama(e); precdl = old; 7- [bnfinit] retune compute_R to try and detect cheating with Bach's constant. 8- rename lisexpr -> readexp, lisseq -> readseq, flisexpr -> freadexpr, flisseq -> freadseq 9- rename Fp_gener -> gener_Fp, Fl_gener -> gener_Fl 10- change TeX output so that it's easier to handle: - replace \over by \frac [ most people use AMS styles which forbids \over, not plain TeX, which doesn't have \frac ] - remove many extra braces { } [ would prevent line breaks ] - insert carriage returns 11- [GP handling of print1()] get rid of 'added_newline' hack, replace by monitoring in pariputc/pariputs.[#243] 12- do not install libpari.a.xxx [ include files are not versionned either and libpari.a is useless without the correct ones, contrary to .so ] 13- rename gtrans_i -> shallowtrans, concatsp -> shallowconcat. 14- add GC in parsing loop for huge input vectors [ needs roughly 2 or 3 times less memory ] 15- implement pari_is_dir() using stat() instead of opendir() 16- moved defaults from gp/gp.c to language/default.c [ -> into libpari ] 17- moved input_loop to language/es.c [-> into libpari ] 18- when called as 'gp --test', disregard actual terminal dimensions 19- allow ellinit over any ring (support only basic operations) 20- allow ellchangecurve on e = [a1,a2,a3,a4,a6]. 21- typecast cleanup: move most of paricast.h to pariold.h 22- rename readGEN -> gp_read_stream, freadseq -> gp_read_str. freadexpr/readexpr are deprecated, use gp_read_str/readseq 23- make sure GP_DATA is always defined --> default() becomes available in libpari 24- make gnil public 25- change content() so that it always returns the gcd of all entries (as documented). Used to return the gcd of all _contents_ of the entries of a t_VEC/t_COL/t_MAT. 26- backport into quadclassunit some of the bnfinit improvements [specifically, change subfactorbase, #298] BA 27- rewrite rectdraw in an object-oriented way [ reduce code duplication in hi-res plot routines ] BA 28- change the semantic of includedir to not include the pari suffix. Instead /pari is automatically added by make install. 29- improve plindep (use lllintpartial and floating point LLL) + allow lindep with p-adic entries BA 30- allow relative paths in Configure --with-xxx directives BA 31- allow sinh, cosh, tanh with t_PADIC arguments XR 32- bnrstark(): try harder to find solutions [increase precision faster #255] BA 33- rename coefs_to_xxx() to mkxxxn() for xxx in {vec,col,pol,int}. 34- semantics of gcd with inexact zeros: now gcd(0., a) is 1 [used to be a and led to problems: e.g 0./(1.*a)/(1.*a) not simplified ] 35- warn if 'perl' is found but doesn't seem to work 36- forbid the f'(x) construction when x is not a constant type [#327] Added BA 1- polgalois(): 4th component: transitive group name following GAP4 BA 2- new functions ZX_add, ZX_sub, ZX_neg, ZX_Z_add, ZX_Z_mul BA 3- new functions FpC_to_mod, FqV_to_FlxV, FpC_red 4- member functions r1, r2 5- functions factoru(), factoru_pow(), powiu(), powuu(). 6- symbolic link$MANDIR/gp-$version.1 ->$MANDIR/gp.1
7- new functions shallowcopy, shallowconcat, shallowtrans, vecslice,
vecpermute, vecslicepermute, rowslice, rowpermute, rowslicepermute
BA  8- support for gp2c-run on cygwin
BA  9- new optional package 'elldata' and new GP functions ellsearch and
ellidentify to access it.
BA 10- support for ellinit("<curve name>") through elldata.
11- new functions vec_ei / col_ei
BA 12- new function  FpC_Fp_mul, FpV_FpC_mul
BA 13- new functions const_col, const_vec, vec_is1to1, vec_isconst