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


(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
> i = 1234567  \\ go directly to the interesting case
> 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)
> i

[ without the initial trap(), interesting variables would have been reset
before control would go back to the GP prompt ]

Have fun,


P.S: And a merry Christmas to everybody...

P.S2: The Changelog:
Done for version 2.0.18.beta (released 20/12/99):
    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 
   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

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

    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

    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/