Karim Belabas on Thu, 18 Dec 2003 01:44:20 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
pari-2.2.7 released |
Dear PARI enthousiast, I would like to announce the release of pari-2.2.7.ALPHA. The sources can be obtained using the old address ftp://megrez.math.u-bordeaux.fr/pub/pari/pari-alpha.tgz or (preferably) through the new website: http://pari.math.u-bordeaux.fr/download.html where an updated Windows binary is available. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This is again mostly a bugfix release. A few outstanding points : -- since 2.2.0, zeta() had become much slower for a variety of inputs (for instance large imaginary part). The problem has been fixed, and the routine is now consistently faster. Gamma and a few other routines using Bernoulli numbers and Euler-Mac Laurin summation have been improved in the process. bernfrac() is orders of magnitude faster: ? bernfrac(2000); \\ 2.1.5 time = 2,130 ms. ? bernfrac(2000); \\ 2.2.7 time = 20 ms. -- polredabs() is more robust, and often able to handle a nasty cases now (compositum of many small subfields). The algorithm remains exponential, but small polynomials tend to be found much sooner. Also the output is truly canonical now: polynomials P and Q define isomorphic number fields iff polredabs(P) == polredabs(Q). -- bnfinit() restarted from scratch when hit by precision problems. This was especially painful if a number of hours had been spent locating algebraic relations in the class group. This has been fixed, and increasing accuracy is essentially painless now (a few seconds lost for the update, no information forgotten). As a result a number of computations can be run at lower precisions. Faster. BEWARE: the "technical" argument in bnfinit calls has been changed ( obsolete components deleted ). Calls like bnfinit( pol,, [0.1,0.1] ) remain valid, but using more than 2 arguments will act differently than in previous versions. -- the GP interface to PARI functions is now stored in an external database instead of being hard-coded in C files, and a number of further defaults have been delegated to config files installed in standard places. Besides the cleaner internals, synchronization with GP2C is no longer a problem, and polgalois() for extended degrees works out of the box on Windows. -- If you have not been following the Windows improvements, there is now a fully functional binary, including install Wizard, line editing, online help, hi-res graphics, dynamical loading & install(), Galois files ... Try it out ! Have fun! Karim. P.S: The complete Changelog. Done for version 2.2.7 (released ??/07/2003): Fixed 1- bench input files: should all start by a 'gettime()' instruction 2- bnfisnorm(bnfinit(x^2-11),1) --> [Mod(1, #), 1] [ return a result involving MAXVARN on trivial input ] 3- [Mat(5)] * [[0]~]~ --> 0. Should be [0]~ [introduced in 2.2.6-C.25] 4- \p 1000 E=ellinit([1,0,1,-120039822036992245303534619191166796374,5042249924849106700108 01799168082726759443756222911415116]); x1=1e100; y1=ellordinate(E,x1)[1]; ellpointtoz(E,[x1,y1]); --> impossible addition t_VEC + t_VEC. [ precision error ] 5- erfc(non scalar) --> type error 6- raising to t_FRAC power didn't work with p-adics: (-1+O(5))^(1/2) --> 1 7- [ isprime / APRCL: ] integer overflow, e.g isprime(2^32 + 1, 2) 8- sum(i=2^32-10,2^32+10,1) --> 11 [ kind of overflow ] + didn't use the t_INT interface ==> broken with GMP kernel 9- polgalois(x^6-3*x^4+3) --> [24, -1, 1], should be [24, -1, 2]. From 2.2.4 10- nfisincl(x, x^2+1/2) --> SEGV [ assumed integral inputs ] 11- numbpart(10^15+2) --> SEGV [ check for x < 10^15 incorrect ] 12- polcompositum(x,x) --> SEGV [ problem with poldeflate(deg 0 pol) ] 13- zeta((1+I)/2^225) --> 7e28 [ precision error when using func. eq. ] 14- typos in qfsign/qfgaussred() [ aka sqred2 ]: wrong results: e.g qfsign([0, -1, 1, 1; -1, 0, 0, 1; 1, 0, 0, -1; 1, 1, -1, 0]) --> [2,2] ( should be [2,1] ) 15- numbpart(0) --> 0 [ should be 1 ] GN 16- assembler section of Sparc Makefiles relied on GNU make specific $< MSo17- off-by-1 error in Vec( t_STR ) [ memory corruption ] 18- off-by-1 error in itostr(), e.g 10^11 [ memory corruption ] BA 19- [hi-res plot: X-Windows] rescaling bug MSo20- bittest(1,32) --> 1 [ off-by-1 error ] 21- nfeltpowmodpr(nf,x, prime of degree 1) --> SEGV [ FpXQ_pow couldn't handle computation in prime fields ] 22- charpoly( Mod(mat, poly) ) --> SEGV [ out of stack components not treated properly ] 23- memory corruption when parsing floating point constants [ constante() ] 24- too little GC in serreverse() 25- bnfinit(huge field) --> "precision loss in truncation" [ missing term sqrt(disc(K)) in norm bound ] 26- allow conj(t_POLMOD) provided the modulus degree is <= 2. MSo27- ?0 with _many_ user functions defined --> SEGV [ typo in commands() ] 28- quadclassunit(5) --> PLEASE REPORT [ can't build subfactorbase, introduced in 2.2.6 ] 29- valuation(x^3, x^2) --> 3 [ valuation at a monomial assumed it had degree 1, introduced in 2.2.2 ] 30- Set(matid(2)) --> [ "[1, 0;\n0, 1]" ]. Ensure "raw" format is used, not "prettymat". 31- typo in rnfpolred(bnf, *). E.g rnfpolred(nfinit(polcyclo(3,a)),x^3-19) --> oo loop [ non-positive T_2 form ] 32- typo in ellap: rare wrong result. E.g E=ellinit([0,0,1,-5115523309,-140826120488927]); ellap(E, 1315717181) BA 33- qfbprimeform(-3, 1) --> data corruption [ gzero's signe set to 1 ] 34- qfbpowraw(x, n < 0) reduced its output 35- stack corruption when adding huge p-adics 36- idealintersect did not allow fractional ideals 37- Ser([1,2]) --> 1 + 2*x + O(x^2) [ OK ], but Ser([0,0]) --> O(x^16) 38- writebin() still produced incompatible output depending on the multiprecision kernel. 39- [alg | lin]dep( t_PADIC ) had stopped working in 2.2.6 40- some precision problems in polgalois(deg(p) > 7) [ changed slightly some heuristic settings: the algorithm is simply not rigorous... ] 41- typo in polredabs: polynomial of minimal T_2 norm might be missed [ actually found, then deleted due to a typo when "Sorting" small vectors, which would assess them the norm of a larger element ] 42- polredabs(,4): some polynomials of minimal norm could be eliminated due to fixed buffer size for the small vectors. Made that dynamic. 43- in certain situations (when using Allombert's algo.), subfields did not output subfields sorted by degree 44- [Windows installer:] online help did not work on most installations 45- lines continuation with \ did not work with DOS fileformat BG 46- random(2^31) returned integers in [0, 2^32-1] [ long/ulong problem ] 47- isprime(156499227435744375600531968861048687296374896432841731) --> SEGV [ missing case in aprcl:sqrmod5() ] BA 48- Configure: using gcc-3.3 + LANG=french, Configure failed to detect gcc [ messages translated ] 49- alpha kernel would not compile with a C++ compiler (missing extern "C") 50- rare stack corruption in gmul(t_COMPLEX, t_COMPLEX) [ when result is real ] 51- valuation(Mod(x,x^2), y) --> oo loop [ now 0 ] 52- optimization problems in new zeta() and gamma() [2.2.0 C13] ( e.g zeta(0.5 + 10000*I) was _much_ slower than before ) 53- precision problem in nffactor [ in get_R() ], could yield to a SEGV, e.g nffactor(nfinit(y^4+7^2),x^28-14*x^24+20321*x^20+166992*x^16+1171296*x^12+1342208*x^8-5005056*x^4+3211264); 54- contfrac(Pi/2,2) --> [1, 1] (doc says a_n != 1, so should be [2]) 55- factorint( 3280696195200006885547973357173182411881462602934802054749349683516314460050 2548596646024265171468102088952756084355402608216473040677346490348936595334 0299389230010814564530645152250241760175805765084544728012391149823776145022 4913178048870032606672750626773595019035786804361581343222144074318522768947 2061349830773562073895748494534362180537529975336881525935996152181576667869 0625865166662910961888106910345518707973056625912728422391238723575276042635 9727112469435556047168454738353621102783718736137552743946577993495054202848 9372915917197045423574773583244796785665263319216397122018435444897 ,11) --> impossible assignment I-->S [ stack corruption ]. 56- typo in kummer.c:invimsubgroup [ hnfmod --> hnfmodid ]. Very rare weird error message in rnfkummer(): "wrong subgroup in conductor". 57- typo in alglin2.c:hnfspec() [ same loop index used twice ] 58- zeta(x) very slow for large integer |x| (use new bernfrac() code) 59- removed -mimpure-text from DLLDFLAGS on non-sparc architecture XR 60- Configure/bench: use head -n # instead of head -# (deprecated and unsupported by GNU coreutils) 61- not enough GC in mpbern() [ Bernoulli numbers ] and psi() 62- \p50000, then polroots(x) --> exponent overflow 63- ellj( t_QUAD ) / eta( t_QUAD ) was forbidden. 64- polredabs(x,1) did not work when x was already reduced 65- polroots(x^3 + 0e-20) --> oo loop [ didn't handle nicely non-exact 0 as a constant coeff ] 66- 'make doc' always rebuilt the documentation, even if it was up to date Changed 1- bnfinit: [small_norm phase] speed up norm computations. 2- [make etags:] use $ETAGS instead of 'etags' if defined 3- [libpari:] renamed incgam4 --> incgam0, incgam3 --> incgamc BA 4- [Description system] Store GP functions in a database in src/functions/ instead of hard-coding them in C files. 5- [libpari:] modified zbrent interface to allow library programming 6- ellpointtoz(E, P): remove the test that P be on E [ useless and often wrong when P has inexact entries] 7- allow serconvol() with 0 series. MSo 8- allow numtoperm(0,k) [ --> [] ] 9- simplify result of basic op. involving complex numbers, e.g. I*I --> -1 as t_INT (was t_COMPLEX) 10- embedings of number fields: use x + iy --> (x + y, x - y) instead of (sqrt(2)x, sqrt(2)y) to map complex embeddings to R^2. 11- disallow Ser( t_MAT ) [ resulted in a series with t_COL coefficients ] 12- nf format to improve idealinv() [ nf[5][6] and nf[5][7] ] 13- disallow sqrtint( x < 0 ) 14- meaning of the GP_DATA_DIR global variable: now points to the directory _containing_ galdata, not to the galdata files 15- qfminim(,,2) + polredabs: look for points by (roughly) increasing norms (was: full enumeration and roughly decreasing norms) 16- exp(-10^10) --> 0.E2525223 [ was 'underflow' ] 17- polredabs: improve the search for subfields (no polynomial factorization required now, only linear algebra) 18- ellglobalred(): use gcd(e.c4, e.c6) to help factor e.disc 19- removed obsolete components ("checks", "bits of accuracy left in computation") from quadclassunit / bnfinit / bnfisprincipal / bnrisprincipal / bnfunit outputs. 20- 'make test-graphic' is gone. Use 'make test-ploth' HC 21- new implementation of gamma() 22- renamed Oxxx/dft.Config.in --> pari.cfg 23- new implementation of bernfrac() [ use zeta(2k), initial GP code by HC] 24- bernvec always calls bernfrac() [ hence has become useless ] 25- [sparcv8_super kernel:] replace asm divll with portable one (slightly slower but fixes many compilation problems, and easier to maintain on an architecture which has become hard to test) 26- buchall() [ bnfinit, etc ]: complete rewrite to avoid restarting from scratch after a precision increase. All relations stored in algebraic form, so that data is easily recomputed to higher accuracy if necessary. Use lower default precision. 27- remove special handling of t_STR by printtex / writetex [ 2-2-6-C19: a \ would be inserted in front of $, %, etc. ]. This broke things like printtex("$", x, "$"), and is better done by the user herself. 28- bnfinit(): remove useless components from the "technical parameter". Added 1- [Configure:] flag --with-ncurses-lib=* BA 2- support for FLTK graphical library [ hi-res plot ] BA 3- galoisidentify for order 96 to 127. 4- default 'datadir' [ to allow relocating 'galdata' for polgalois ] 5- hi-res plotting under Windows GTo 6- routine qfrep() BA 7- routine qfbsolve(Q,p) for Q imaginary and p prime 8- new testsuite: make test-galois (~ 1 minute) 9- new options to Configure: --with-fltk, --emacsdir, --datadir, --sysdatadir SG 10- updated micro-kernel for HPPA BA 11- Add code 'i' for functions returning C int (not long) Removed 1- bruteall [ useless, undocumented variant of 'brute' ] 2- option to Configure: --miscdir -- Karim Belabas Tel: (+33) (0)1 69 15 57 48 Dep. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19 Universite Paris-Sud http://www.math.u-psud.fr/~belabas/ F-91405 Orsay (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]