| Karim BELABAS on Thu, 13 Feb 2003 19:12:29 +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/