Karim BELABAS on Thu, 13 Feb 2003 19:13:45 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
pari-2.2.5.alpha released |
Dear PARI lover, I would like to announce the release of pari-2.2.5.ALPHA. As usual, you can fetch the sources from the link ftp://megrez.math.u-bordeaux.fr/pub/pari/pari-alpha.tgz which points to the up-to-date sources, or from CVS [ the tag is release-2-2-5 ]. This is still an ALPHA release, so usual caveats apply. Hopefully, it is the last alpha in the 2.2 series. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% FEATURES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * The most important feature of this release is probably the introduction of a new multiprecision kernel based on GNU MP library, with vastly improved handling of large integers and reals. This kernel is disabled by default [ it is still experimental, and breaks binary compatibility ]; if GMP is installed on your system, you can give it a try under PARI using Configure --with-gmp before the usual compilation. General speedup becomes noticeable around 150 decimal digits. * Many speed improvements in Class field-theoretic functions, e.g rnfkummer or quadclassunit. * enabled Mestre's quadratic algorithm to compute the archimedean part of the height of elliptic curves using the AGM [ remained disabled for 4 years ] * Fixed improper rounding and conversions from and to floating point numbers [ both in internal operations and during output ]. Eg at \p9 (18:30) gp > 1.2 %1 = 1.19999999 \\ acceptable output, but actually a bug (18:31) gp > 1.2e100000 %2 = 1.19999889 E100000 \\ huge loss of accuracy * A huge number of miscellaneous bugs were fixed (a few of which were introduced in 2.2.3 and 2.2.4). The Changelog is the longest ever. * Configure has been simplified and broken into many smaller files, much easier to maintain. Hopefully gp should compile out of the box on many more architectures. * The old 68000 assembler kernel is no longer supported and was removed from the distribution. Have fun, Karim. P.S: The complete Changelog: Done for version 2.2.5 (released 11/02/2003): Fixed 1- [bnfinit:] typo in be_honest() --> SEGV when cbach2 > cbach [from 2.2.4] 2- apprpadic() when p = 2 (could not work) + typos 3- typo in gphelp [detex mode]: ubiquitous "var" in translation [from 2.2.4] 4- typo in var_make_safe() [ protecting user variables after trapped "stack overflow" ] --> possible SEGV [from 2.2.4] BA 5- [Configure:] add -lm -lc to EXTRADLLDFLAGS, not DLLDFLAGS 6- typo in gp_main_loop: avma not restored properly after allocatemem. [from 2.2.4] 7- typo in [imag|real]_be_honest: SEGV in quadclassunit(D,,[c,c2]), c2 > c [from 2.2.4] 8- typo in rnfisnorminit (pol_up) 9- at \p28: x = (1. + 10^-28) - 1; for (j=1, 100, x = (x-10^-28) + 10^-28) now x has 200 words of precision 10- stack corruption in addition (t_INT + t_PADIC) 11- factorpadic(z+y,2,4) --> SEGV 12- wrong result in idealchinese when the y_i had denominator BA 13- sigma(n,-1) output a wrong result. BA 14- inline alpha assembler broken (registers clobbered) GH 15- polsturm(1, 0, 1) ---> error [ return 0! ] 16- "break loop" did not react correctly to allocatemem() read from a file with \r (stopped reading file right away) 17- matker(x, 1): internal loop forgot a pointer when garbage collecting --> SEGV (or weird error, e.g division by 0) 18- ideallog(nfinit(y),2,idealstar(nfinit(y),4,1)) --> SEGV [bad input] 19- ellrootno(ellinit([0,-25,0,-1250,0])) --> SEGV [from 2.2.3] 20- typo in elllocalred (wrong Tamagawa number, case I0). [from 2.2.4] 21- idealtwoelt(nfinit(y),2/3,1) --> SEGV [bad input] 22- for transcendental function f and polynomial p, f(p) only gave seriesprecision significant terms when val(p) = 0 23- Ser(a/b) --> 1 + O(x^16) (!!) 24- (x^2)^(1/2) --> error 25- idealnorm(nfinit(y),matdiagonal([1+I])) --> SEGV [bad input] 26- polylog(10,x^10) --> O(x^6) at \ps16 [ 16 significant terms ?] --> x^10 + O(x^21) at \ps 21 [missing x^20 term] 27- nffactor/nfroots: SEGV over Q 28- missing sanity checks in install() [ did not check the parser code ] 29- typo in nilord() [lg-->lgefint]: nfdisc() didn't work on 64bit HP 30- ellisoncurve(ellinit([0,0,0,0,1]),[1/2-sqrt(3)/2*I,0]) --> 0 31- type 'gphelp' from command line: carriage return is missing 32- typo in LLL_cmbf() [ rare infinite loop in factor() over Z[X] ] IS 33- [HPUX:] should compile with cc -Ae, not -Aa 34- excessive memory usage in bnrstark() [ InitPrimes ] 35- bessel[jk](t_SER) not implemented around a!=0, but gave (bogus) results [output error message for now] IZ 36- [OS/2:] rename static functions _core[2] (conflict with stdlib.h) IZ 37- [OS/2:] ^C would only work once 38- algdep(.1^5,1,10) --> 1 39- { "a b" } \\ with an explicit \n produced "ab", whereas whitespace in strings is to be retained. 40- inconsistencies in return type from lindep [t_VEC/t_COL]. 41- possible oo loop in ellap [ typo in appell1 ] 42- made PSLQ (algdep/lindep) insensitive to 'realprecision' [use precision of the input] 43- nfinit(x^2-4*3,4) --> SEGV 44- Compilation failure on ORIGIN + Irix: rename 'sgi' --> 'SG' in basemath/galconj.c 45- '\r a' where file 'a' is empty --> "a is not a GP binary file". 46- make sure qflll[gram](x) never fails when x has exact entries [ much faster than qflll(x,1) when the entries are large ] 47- increase subFB sooner in buchall() + add GC in Q_denom { bnfinit(x^8 - 4*x^7 + 462*x^6 - 1372*x^5 + 85789*x^4 - 169296*x^3 + 7540560*x^2 - 7456140*x + 263038707) } took a long time, then overflowed the stack 48- make test-kernel did not work anymore (prototype error in kerntest.c) 49- overflow in u_FpM_gauss (oo loop in ZM_inv for huge matrices) 50- polcoeff(1+O(x^2),1,y) --> SEGV 51- content(y/x) --> 1 [ should be y ] 52- divrem(x,2) --> x/2 instead of [x/2, 0]~ 53- divrem([1.,2],x) --> stack corruption 54- ff(n)=local(v=[],w=[]);n f(n)=n ff(f(n))=n --> error (OK) + SEGV on Linux (same data freed twice) 55- qflll(matrix(2,3,x,y,x+y)) --> SEGV IZ 56- default(primelimit, 2156858852) --> SEGV and other signed/unsigned conversion problems. IZ 57- printtex("x1") and printtex("x_1") gave same output IZ 58- printtex(t_STR) [ protect special characters, eg ~ or \ ] IZ 59- [readline:] support old versions (1.0), try to recover from mismatched headers wrt. library, report version of loaded library in gp header [as opposed to library version at Configure time] BA 60- add "const" keyword to allow building with g++ 61- agm(1+x,2+x) --> oo loop 62- lindep([1,0]) --> error [ problem with trivial cases in PSLQ ] 63- wrong reconstruction bounds in nffactor 64- short help message for isprime/ispseudoprime 65- issquare(t_FRAC or t_RFRAC, &x) did not work [ worked without &x ] 66- nfgaloisconj(x^2+1,4, 0) --> SEGV [ bad input ] 67- typo in quadhilbert(-D): required O(D) memory instead of O(sqrt(D)) 68- all signed/unsigned compiler warnings 69- \p29, tan(Pi/2) --> "division by zero". Made error more explicit 70- nfnewprec(nfinit(x,3)) --> SEGV 71- bnrconductorofchar(0,0)--> SEGV [bad input] 72- qfjacobi( non-square matrix ) --> SEGV [bad input] 73- matmultodiagonal([;],matrix(0,1)); --> SEGV [bad input] 74- [GP, trap:] prevent infinite recursion if default exception handler itself raises an exception 75- allow qfbred(,2) [don't update Shanks's distance] also for definite forms [ignore flag]. 76- lex(x,"y") --> error [ should be -1 ] 77- algdep(0,1) --> 0 [ should be x ] 78- log(1, AGM) --> oo loop 79- [Configure+gcc] remove useless -m* arguments from CFLAGS [ obsolete ] 80- improper rounding when printing floats: 1.2 --> 1.199999999 81- [default:] realprecision was allowed to be 0, and then treated as 9. 82- Precision loss in inputs of large exponent: 1e100000 -->9.99999824 E99999 83- quadgen / quadpoly accepted square inputs --> weird bugs later. 84- poldegree(x^2 / y^4, y) --> -1 85- setrand(178);quadclassunit(82421) --> 2 instead of 1 [from 2.2.4:] 86- polroots( Pol(subst([1,0,4*x,0,2*x^2+24,0,16*x,0,16],x,10^2589) ) --> division by zero [ double overflow ] 87- LLL-reduction over polynomial rings (almost always failed) 88- (x/y)*(y/x) --> y/y 89- fix pari_init_stackcheck to avoid bogus "deep recursion" messages on broken machines. 90- reused invalid (gerepile'd) pointer in mat_ideal_two_elt. Changed: 1- "not enough precomputed primes": output largest needed p if available XR 2- factorpadic so that factorback gives back the original polynomial, up to a power of p 3- type of avma, bot, top to 'pari_sp' (pari stack pointer) [does not break existing code] 4- [library:] make floating point assignments round the inputs (used to truncate) 5- ensure proper rounding in divrr/mulrr() [ important for numbers input in scientific format, e.g. 1e20 ] BA 6- moved internals of mppgcd to mp.c/gcdii BA 7- moved internals of genrand to mp.c/randomi BA 8- renamed mymyrand --> pari_rand31 9- bnrstark: use partial factorization of discriminant when (pol)reducing the polynomial [could embark into hopeless factorizations] 10- primedec: improved search for uniformizers when p | index IZ 11- [OS/2:] improve dlopen(NULL,...) IZ 12- [OS/2:] enable dynamic-linking build IZ 13- [OS/2:] use same CFLAGS as under Linux IZ 14- when using external prettyprinter, write in raw format to logfile [not in TeX format sent to prettyprinter] IZ 15- don't output pseudo-TeX sequences to logfile when using external prettyprinter (raw format) IZ 16- make X11.builtin-gnuplot-dynamic the default graphic library. IZ 17- allow changing the gnuplot DLL name for gnuplot-dynamic at Configure-time e.g. Configure --graphic=gnuplot-dynamic,gnpltdrw 18- allow Vecsmall(t_STR) 19- polredabs heuristic (try harder to detect subfields). Ex: try it on polcompositum(x^2 - d, polcyclo(11)); MSo20- simplified polzagier() DS 21- improvements in elltors() [ faster torsion bound, check bound > 1 before checking precision ] 22- minor improvements in plindep() [p-adic lindep/algdep] 23- 'make all' now builds the documentation [ that way, 'make install' need not run a bunch of TeX commands as root ] 24- improved idealaddtoone/idealchinese/idealapprfact [use dedicated HNF variant + simpler uniformizers in idealapprfact] 25- rnfkummer: do not return rational coeffs as POLMODs: -1, not Mod(-1,pol) 26- improved idealval() 27- simplified element_reduce, idealmodidele (redideal), compute_raygen (create bnr.gen): faster, smaller elements 28- new algorithm for conductor() and bnrdisc() [much faster, does not need bnr.gen]: find minimal f such that P_{1,f}(K) \subset H, computations are done for a fixed modulus F instead of computing the image of H in Cl_f(K) for many f | F. IZ 29- improve portability of make_vi_tags (cf 'make ctags') 30- using install() twice on the same symbol now updates the prototype code 31- re-enable ranlib support (disabled in 2.0.13) 32- declare first argument in pariputs[f] as 'const char*' 33- enabled Karatsuba multiplication for t_REAL 34- broken Configure into many smaller files (config/get_*) 35- let gphelp write all cross-references as [label:LABELNAME] (was [??]) IZ 36- cache optimization in initprimes() [ default(primelimit,.) ] 37- Str() now takes multiple arguments as print(). Str(,1) replaced by Strexpand() 38- prototype of strtoGENstr() [remove flag] 39- remove -Wno-implicit from CFLAGS 40- prototype code 's*' now produces a t_VEC of GENs [callee's business to call GENtostr] (used to be a NULL-terminated list) 41- [gphelp:] if perl not available, don't pretend extended help is. 42- try harder to detect precision problems in floating point lllgram 43- [ix86 kernel:] macroified bfffo() 44- made all GEN macros return signed types [ had inadvertently switched to ulong as a side effect of some other change, long ago ] BA 45- split kernel Makefiles in MakeLVL0 and MakeLVL1. BA 46- --disable-kernel Configure option replaced by --kernel=none 47- compute_polrel() [rnfkummer] was very slow for [L:K] > 5 (compute Newton sums directly) 48- simplified fincke_pohst() [don't recompute gram_matrix] 49- faster trueeta(), faster quadhilbert(D < 0) 50- faster isprime (trial divide by small primes, recognize 1-word moduli) 51- ellheight: use Mestre's AGM to compute Archimedean height 52- poldegree(0) is now VERYBIGINT 53- alpha + gcc: compile with -O3 [ since F14 fixed the optimizer "bugs" ] Added: 1- [TeXmacs:] contextual completion (<TAB>) BA 2- routines ishiftr, gfloor2n, isqrti, randomi 3- routine random_bits BA 4- [Configure:] --builddir flag IZ 5- File README.os2 6- Allow nfroots(, P) [ roots in Q ] 7- routines Strexpand(), Strtex() IZ 8- detect infinite recursion on OS/2 [as on Unix systems] (cf STACK_CHECK) RS 9- routine numbpart() BA 10- GMP kernel BA 11- --kernel Configure option IZ 12- allow an arbitrary polynomial as a 2nd argument to subst() 13- many files in config/ [ from Configure ] Removed 1- macro definition BITS_IN_RANDOM (useless) 2- appr_reduce() [static base4.c]: lllreducemodmatrix does the same. Faster. 3- [useless,undocumented]: idealoplll, idealmullll, idealdivlll 4- 68k assembler kernel [ unmaintained, obsoleted by the GMP kernel ] -- Karim Belabas Tel: (+33) (0)1 69 15 57 48 Dép. de Mathématiques, Bât. 425 Fax: (+33) (0)1 69 15 60 19 Université Paris-Sud Email: Karim.Belabas@math.u-psud.fr F-91405 Orsay (France) http://www.math.u-psud.fr/~belabas/ -- PARI/GP Home Page: http://www.parigp-home.de/