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/