Karim BELABAS on Sun, 30 Apr 2006 13:39:32 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

pari-2.2.13 released


Dear PARI lovers,

I would like to announce the release of pari-2.2.13-BETA. The sources and a
pre-compiled binary for Windows can be obtained through the address

  http://pari.math.u-bordeaux.fr/download.html

See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems.
If you are running Mac OS X, please see this FAQ before reporting
problems with 'readline' (line editing):

  http://www.math.u-bordeaux.fr/~belabas/pari/doc/faq.html#mac10readline

===========================================================================

This is the second and hopefully last BETA release of the PARI/GP system
in the 2.2.* series. We would like this release to be tested extensively.
Please update and report any problem in 2.2.13, we need your help !

Highlights since last beta release (2.2.12):
  - cleaned up the memory allocation code for INTMOD/POLMOD/PADICs.
    Objects involving them were vulnerable to memory corruption
    (old design bug, removed arbitrary assumptions and special cases).

  - cleanup of all assembler kernels: a large number of combinations
    architecture + compiler + Configure flags (--kernel, --with-gmp)
    have been tested, and some of them fixed (did not compile or were
    missing some symbols).

  - revert to LLL as the default algdep / lindep engine [ demote bad PSLQ
    implementation ].

  - qfminim(x,,,2) is very robust now (esp. when x has exact entries,
    however large).

  - specify the various content/gcd functions, and fix inconsistencies.

  - gp2c now handles precision changes properly.

No further cleanups are scheduled before the stable release, and no feature
will added at this point. This should become pari-2.3 in a few weeks.

Have fun,

    Karim.

P.S: The Changelog
Done for version 2.2.13 (released 26/04/2006):
  Fixed
BA  1-[HPUX] 'program' bench failed for gp-sta [install did not work]
    2- made BITS_IN_LONG and related constants 'signed long' [ avoid
       problems like : exp(10^10) --> 10^10 + 1 (silent overflow) ]
    3- --kernel=none : libpari ended up not containing the 'divll' symbol
    4- polgalois(x^3-2) --> [,,,"A3"] when new_galois_format was unset.
    5- problem with negative valuations in ggcd(t_PADIC) [#411]
    6- Fp_pow for huge moduli could return a negative number [#417]
    7- y;x/y/z/x --> error [#410]
    8- polredabs(x^4-35048*x^2+1016392*x-7368842) --> same, instead of
       x^4 - 17524*x^2 + 69403802. Rounding error, due to setting the
       relative precision wrt the wrong reference object.
    9- nfisideal() could raise an error instead of returning 0
   10- nfreducemodpr only accepted nf's (not bnf's or richer)
   11- 1/a/x --> 1/a/x; 1/(a*x) --> 1/(a*x). Now 1/(a*x) in both cases
       (unify t_RFRAC normalization routines)
   12- content(1.*a*x) --> 1 [ now returns a ]
   13- content(1./a*x) --> 1.00000/a, but content(1./a*x + 1./a) --> 1/a
       [ now returns 1/a ]
   14- t_SER ^ t_FRAC introduced floating point numbers even when
       rational expression available, e.g (8 + x)^(1/3)
   15- round(t_POL/t_SER, &e) with leading coeff rounded to zero
   16- trace(Mod(y,x)) --> SEGV
   17- gcd(1, 1/x) --> 1 [ gcd(Pol(1),1/x) correctly returns 1/x ]
       content(x/y + 1) --> 1 [ content(x/y) correctly returns 1/y ]
       content(x + 1/y) --> 1 [ also wrong in pari-2.1.7 ]
       content(1/x/y) --> 1  [ should be 1/y ]
   18- missing vectors in qfminim(x,b,,2) [ m omitted ]
   19- 'make test-kernel' [ wouldn't compile ]
   20- matsnf(matrix with t_POL entries, 1) ---> incorrect matrix V
   21- O((-2)^3) --> invalid object
   22- (0.*x)*(0.*x) --> 0.E-57 [ instead of 0.E-57*x^2 ]
   23- qfminim(x,,m,2) [b omitted] -> [n,B,v]: output correct vectors (v),
       but reported too many (n too large).
   24- qfminim(x,,,2) wrong when x has huge entries. Work out a sensible
       default precision if x has exact entries.
BA 25- HPPA 32bit level0 inline assembly addmul constraint was too weak.
   26- factorback(x,y) --> error if x,y were valid t_VEC with exactly 6
       components [ typo in checknf_i ]
   27- [configure] shared libraries on 64bit sparc require -fPIC / -KPIC
   28- (x^3/y^3)^(1/3) -> x + O(x^17)  [ leading coeff sometimes lost #433 ]
   29- ??INT worked, but not ??t_INT
   30- inconsistencies wrt variables in t_POLMOD, e.g
       Mod(x*a,x^2)' ---> Mod(x, x^2)
       deriv(Mod(x*a,x^2)) ---> 0
   31- contfrac(sqrt(19),2^31-1) --> overflow [ signed overflow can't
       be reliably tested, use unsigned computations ]
BA 32- on x86_64 + gcc-4.0, CFLAGS was missing a -fno-gcse-after-reload
   33- [output=3] give more time to external prettyprinter [#209]
   34- rare SEGV in factor(t_INT) with low stack space [ #345 ]
   35- ispower(1) --> error, ispower(-8) --> error [ allow negative numbers ]
   36- Configure -a + kernel = $arch-gmp didn't work [missing -lgmp #438]
   37- divisors([]) --> SEGV [#441]
   38- missing GC in bernfrac
   39- bnrrootnumber(bnrinit(bnfinit(x),1),[]) --> SEGV [#443]
   40- f()= local(m = matrix(2,2)); m[1,1] = 1  f() --> m[1,2] also set to 1
   41- make test-kernel would always fail with gmp kernel.
   42- elllseries(e, 0.) --> error [ only elllseries(e,0) worked ] [#445]
   43- 'ftime' was never detected by Configure
   44- setrand(74);quadclassunit(-83138791008,,[0.2,6]) --> oo loop
       [ large prime relation hashtable corrupted when changing subfactorbase ]
   45- a(k)=if(k==0,0,a(k)=a(k-1))
       a(1) --> SEGV [#447] (add refcounts to 'user function' structs)
   46- getheap() did not report properly the "size" of user functions
       (value too small)
   47- add compatibility macro decomp -> Z_factor [ used by mwrank ]
BA 48- minpoly(,,v) might return polynomials in x instead of v.
   49- make test-kernel required inlining compiler
   50- make test-kernel didn't work with C++ compilers
   51- ia64 kernel assumed 64bit longs, whereas compilers can be
       configured for 32bit

 Changed
   1- RgX_simple_gcd: make sure result has non-zero leading term [#412]
   2- simplify(t_RFRAC): remove assumption that deg(denom) > 0 [#413]
   3- split bfffo.h from level0.h
   4- semantic of t_SER with inexact coefficients is now the same as
      for t_POL: the sign is 0 iff all coefficients are zero. Either
      there are no coefficients, or the leading coefficient is an
      inexact zero.
   5- removed all non-inline assembler kernels : they were complicated to
      Configure, mostly untested, and inefficient ( function call overhead +
      must use global variable hiremainder/overlow when operating on limbs
      instead of LOCAL_HIREMAINDER trick ). If this slows down your
      application (it should not), install gcc or use the gmp kernel.
   6- allow arbitrary n in divisors(n) and fordiv(n,), provided factor(n)
      succeeds [ was restricted to t_INT or their factorization matrix ]
   7- made LLL the default algorithm in algdep / lindep again [ replaces PSLQ ]
      Our PSLQ implementation is slow and unstable, and LLL performs much
      better, see the example in ??algdep.
   8- addrr: extend accuracy much less frequently
   9- make sure all kernel symbols are present in all versions of libpari
       (addll & friends could be inline)
   10- change the meaning of gcd(x) and lcm(x) when x has vector/matrix
       components (a global recursive gcd/lcm is taken, instead of a
       cartesian product of individual gcd/lcm)
   11- disallow vecmin([]), vecmax([]) [ returning stoi(+/- BIGINT) is not
       helpful ]
   12- [libpari] renamed lellseries -> elllseries [ as in GP ]
   13- semantics of stackdummy() [ make it consistent with gerepile ]
   14- never assume that part of an object is "permanent" when it is out
       of the stack (was used by INTMOD/POLMOD/PADIC). Always copy it.
       As a result, 'gmodulo' and 'forcecopy' become obsolete.
   15- use quadclassunit in qfbhclassno for large D, thereby ASSUMING GRH.
   16- ellan was bypassing the check for CM
   17- uniformize the generation of parilvl0.h [ genkernel ]

  Added
    1- [library] new function isinexact.
BA  2- [elldata] function forell() to loop over elliptic curves.
BA  3- [elldata] function ellconvertname() to parse curve name.
    4- [library] new function RgX_shift, RgX_mulXn, RgX_shift_shallow,
       RgX_Rg_div
BA  5- m68k level0 inline assembly kernel
    6- [library] new function isint, issmall, mkrfrac
    7- Configure --time=timing_fun
    8- [Configure] genkernel script

  Removed
    1- kernel functions shiftl / shiftlr (inefficient, unused, untested)
       [ backward compatibility version in src/kernel/level1.h ]
    2- obsolete functions forcecopy (use gcopy) and gmodulcp (use gmodulo).


--
Karim Belabas                  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]