| Karim BELABAS on Mon, 20 Dec 1999 20:29:10 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari-2.0.18 update |
Hi all,
there's a new update at
ftp://megrez.math.u-bordeaux.fr/pub/pari/pari.tgz
(of course, you can also get it from the CVS repository, as usual). It
incorporates a lot of bugfixes (mostly minor, or of the "bad input" kind),
plus all patches that were posted on this list since 2.0.17.
New feature:
============
One of the bugfixes [ a == b was unsafe: if a and b were not only different,
but also incompatible w.r.t subtraction, an error occured ] involved
implementing a primitive form of error trapping. This is now directly
available under GP, and should be quite useful to debug programs, or simply
to check how far the computation has gone:
(19:53) gp > trap()
\\ this enables general error trapping (without a specific handler)
\\ I interrupt the next command by hitting ^C after a few seconds:
(19:53) gp > some_huge_computation()
*** user interrupt after 6 s.
Starting break loop (type 'break' to go back to GP).
['' or 'next' will continue]
\\ A new kind of prompt ('>') appears now, as GP is waiting for input
\\ The main computation has been suspended.
> \g1 \\ modifying some internals
debug = 1
> i \\ checking some local variables
10001
> i = 1234567 \\ go directly to the interesting case
1234567
> next \\ ok, I'm done.
\\ here the computation goes on as if all commands that were input during
\\ the "break loop" had been part of the program from the start
Another example. This time, it's not a user interrupt, an error is raised by
GP, and there's no way to recover as above. On the other hand, the "break
loop" makes it easier to diagnose the problem:
(20:00) gp > some_stuff(); for (i=-3,3, 1/sin(i)); some_other_stuff();
*** division by zero in S/R
*** Starting break loop (type 'break' to go back to GP):
*** ...uff();for(i=-3,3,1/sin(i));some_other_stuff()
^--------------------
> sin(i)
0.E-28
> i
0
[ without the initial trap(), interesting variables would have been reset
before control would go back to the GP prompt ]
Have fun,
Karim.
P.S: And a merry Christmas to everybody...
P.S2: The Changelog:
===========================================================================
Done for version 2.0.18.beta (released 20/12/99):
Fixed
1- wrong method chosen in isinexactfield for 0 polynomials
2- stack corruption in sylvestermatrix(0,...): Mod(x,x)^-1 --> SEGV
3- garbage left on stack in ginv(1 / n)
4- typo: carreparfait --> gcarreparfait in nfiso0()
5- for (A=1, 2, A = -A) --> SEGV
IZ 6- [gnuplot] couldn't set terminal as the first graphing operation
DE 7- typo in kernel/sparcv7/level0.S: err --> pari_err
8- TeXmacs interface (use new protocol)
9- call simplify() before applying GP '==' and '!=' operators
Ex: x;n;k;m; (n+m)==(k+1-k)*(n+m) was false.
10- sumdiv(N,...) required single precision N
BA 11- bound problems in nfgaloisconj()
12- infinite loop in do_agm()
13- "Warning: in Gauss lg(a)=1..." from isprincipalall0
14- specific error for precision problems with p-adic ell. curves
IZ 15- ploth() plots are 1/2-pixel off
BA 16- result was not always complete in nfgaloisconj()
17- type(1/y, RFRACN) --> SEGV + check compatibility before applying type()
18- made 'secure' safer. Confirm before write, prevent from changing 'help'
19- gettime() called the wrong timer(): was reset in debug mode
20- missing case (doubling) in apell1
21- gmod(x, mod) replaced by gmul(x, gmodulcp(gun,mod)) in poldivres
[obscure bugs when dividing complicated polynomials with mixed
polmods/intmods].
22- Make sure result is a t_POL before doing a setvarn in caract2_i()
23- precision problems in ClxModulus (bnrstark()) [check leading term!=0]
24- elltors() could miss some points: determine needed precision first
25- clean up files after an error (not only under GP)
26- divisors(highly composite integer) --> "cryptic" error message
27- 'make clean' wasn't thorough
28- ellpointtoz(e, [0,0]) could correspond to the inverse point
29- "ideals not coprime" in rnfsteinitz
BA 30- typo in Configure [CPP] (cc --> CC)
BA 31- member functions for galoisinit
32- allowed power series in Mod(). Fixed cryptic error messages.
33- precision problems in zsigne
34- value of 'gzip' found by Configure overwritten in TOP_Make.SH
XR 35- precision loss in Round 4
XR 36- ensure that fundamental unit is computed in quadray (if D > 0)
XR 37- precision fixes in stark.c (inconsistencies 32/64 bit + early abort)
38- bug in P*Q for polynomials over (non prime) finite fields if Q is
defined over the prime field
XR 39- [stark.c]: bugs in RecCoeff3, reduced memory use in ComputeArtinNumber
40- core dump on infinite recursion under GP
41- use appropriate precision in torselldoud (could be much too large)
42- removeprimes(addprimes) didn't work
43- (at least part of) numerical instability of LLL over R
44- f() = bug(x, &y) ---> syntax error
XR 45- inefficiencies in ComputeArtinNumber for large modulus
HC 46- no GC in dirmul
47- meaningless heap count for user functions
48- setrand(16);quadclassunit(48893) --> infinite loop
49- rnfpolred(bnfinit(y^2+1),x) --> SEGV
50- float overflow in polroots (e.g polroots(x^3 + 2^1024*x + 1))
51- charpoly(Mod(1,x^2+1)) --> SEGV
52- added GC in polsturm
BA 53- bugs involving rarely used type combinations in generic operations
54- check x >= 0 in lllgramint(x)
55- in rnfdedekind: use rnfhermitemod, not rnfhermite (slooow)
XR 56- updated factorpadic to use new Round 4
BA 57- nfgaloisconj: discrepancies between 32/64 bits architectures
58- random(1 << 32) could have 32 bits
59- missing newline in error messages on startup (reading .gprc)
60- silent codeword overflows (e.g. O(x^100000))
IZ 61- updated gnuplot support
62- x="a"; eval(x) --> error
63- general flakiness with buffer handling under GP
(Ex: input() + allocatemem --> SEGV)
64- [1] == 2 --> error (instead of 0)
65- lngamma(-0.106) --> SEGV
66- quadray(-11,3) --> x^2
XR 67- typo in nilord2 (wrong value for modular reduction)
68- unsafe division t_SER / t_SER with clonable components
69- polroots(1E-28*I*x^2+1) --> bug in roots (conjugates)
70- typo in cxlngamma [ lngamma(-7.4927-0.418564*I) --> SEGV ]
71- polroots(polynomial of very small Norm wrt prec) behaved badly (SEGV)
72- polylog(1, Mod(1,2)) --> SEGV
73- zeta(22!/23) --> SEGV
74- not enough GC in rnformax
75- over-reactive 'secure' default (+ moved it later in default .gprc)
76- sqrt(Mod(15,y^2+1) + O(x^5)) --> SEGV
BA 77- typo in isinexactfield
78- sum(x=1,10, expr1; seq) : seq silently ignored
79- ellan and elltaniyama didn't check their arguments
80- simplify(t_POLMOD) could create invalid objects (mod not a t_POL)
81- primes(-1) --> SEGV
82- addprimes(0) wasn't rejected
83- various inconsistant error bessages (e.g. factor("a"))
84- estimate for the precision of unit embeddings in isprincipalall
85- global("b") --> polvar corrupt
86- hnfmod --> hnfmodid whenever possible
87- check arguments in incgamc
88- non-rectangular matrices could trigger a SEGV (in error msg!)
89- qfminim(,,2) didn't like mixed t_REAL/ t_FRAC entries (typo)
90- inconsistant spacing after GP error messages
91- regrouped code between idealred and idealmin
92- prevent 'install' in secure mode
DS 93- typo in bnfisnorm(,,flag > 1) [extraneous gtrans]
94- don't reset pariErr in err_recover()
95- highlevel.c had become dependant from gp.c
XR 96- incorrect output of quadray(D,,1) when D>0 and rayclass is trivial
97- typo in lllall_trivial --> matkerint([0;0]) didn't work
BA 98- incorrect object for gerepileupto in gscalcol
99- try to detect bad input (e.g quad. form not > 0) in (integral) LLL
XR100- typo in nffactor ("keep the value of i")
IS101- work around an obscure gcc bug (gcc-2.96, alpha-linux) in stark.c
102- rnfcharpoly(nfinit(y^2+1),1,1) --> SEGV
Added
IZ 1- [gnuplot] look up directory tree for gnuplot related files
2- improved on-line help wrt to defaults and ambiguities
(? default/some_default, ? some_default)
3- library functions gentimer, genmsgtimer, get_timer
HC 4- optional argument to direuler (length of result)
5- low-level kernel function for integer squarings (twice faster)
6- error trapping in library mode and under GP
7- break loop to investigate errors under GP
8- "sprintf-rounding" under GP
IZ 9- string justification in high-res plot
IZ 10- bit operations ( bit[ and | or | neg | negimply | xor ] )
XR 11- add new flag value in bnrstark/quadray: try to find a better modulus
Changed
1- default binary produced by Configure -g is now static
2- improved the heuristics in ellisoncurve
HC 3- extend the range of direuler (maxp was 2^16)
4- trial divide by the "private primes" before the primality tests
5- don't double stack automatically
6- disable ff_poltype correction (for lack of decent finite fields) in gmul
7- slight optimization to hnf / hnfmod (skip zeroes)
XR 8- nfsqff: choose a prime ideal with few factors + better heuristic bound
IS 9- default CFLAGS on linux-alpha
10- improved factorcantor / factorff
Removed
1- sunview "support" (didn't work, hard to test, X11 is a better standard)
__
Karim Belabas email: Karim.Belabas@math.u-psud.fr
Dep. de Mathematiques, Bat. 425
Universite Paris-Sud Tel: (00 33) 1 69 15 57 48
F-91405 Orsay (France) Fax: (00 33) 1 69 15 60 19
--
PARI/GP Home Page: http://hasse.mathematik.tu-muenchen.de/ntsw/pari/