Karim BELABAS on Thu, 20 Oct 2005 12:50:02 +0200


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

pari-2.2.11 released


Dear PARI enthusiast,

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

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

While this is still an ALPHA release of the PARI/GP system, the code is
stable enough for widespread testing. I plan one last alpha release
(moving towards thread safety, and bug fixes) before the end of the
2.2 development cycle, hopefully before the end of the year. Please
test and report problems in 2.2.11, we need your help ! Please also
report documentation problems.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Highlights:
===========

  * new Elliptic Curve functions ellsearch(), ellidentify(), for use with
    John Cremona's database [ in his new format ].

    ? E1 = ellinit([0,0,0,0,16]);   \\ rank 0, not a minimal model
    ? ellidentify(E1)
    %2 = [["27a3", [0, 0, 1, 0, 0], []], [2, 0, 0, 4]]

    ? E2 = ellinit([0,0,1,-7,6]);   \\ rank 3, minimal model
    ? ellidentify(E2)
    %4 = [["5077a1", [0, 0, 1, -7, 6], [[-2, 3], [-1, 3], [0, 2]]], [1, 0, 0, 0]]

    ? ellsearch("11a1")             \\ individual curve
    %5 = ["11a1", [0, -1, 1, -10, -20], []]

    ? ellsearch(11)                 \\ curves of conductor 11
    %6 = [["11a1", [0, -1, 1, -10, -20], []], ["11a2", [0, -1, 1, -7820, -263580], []], ["11a3", [0, -1, 1, 0, 0], []]]
    [ you need the 'elldata' package from the download page to enable
      this feature ]

  * polgalois() identifies groups in a more readable form, as in:
    ? polgalois(x^6-2)
    %1 = [12, -1, 1, "D(6) = S(3)[x]2"]

    ? polgalois(x^11-x-1)
    %2 = [39916800, -1, 8, "S11"]
    [ you need the new 'galdata' package from the download page to have
      this feature turned on for polynomials of degree 8 - 11 ]

  * new p-adic functions (Gamma, zeta, faster p-adic algdep/lindep, etc.).

  * extensive retuning of MPQS (faster integer factorization).

  * new function substvec() for parallel substitutions

  * new function readvec() to read in data files, e.g let 'file' contains
    the following lines:

      1
      2
      3

    ? readvec("file")
    %1 = [1, 2, 3]

  * better TeX output.

  * general cleanup in libpari: removal of almost all typecasts, many
    internal functions documented, better function names (see the libpari
    user manual for the "new style" of PARI programming)

  * a gp2c release is forthcoming, supporting new GP functions, e.g. default.


Have fun !

    Karim.

P.S1: Known problems, none of which are likely to affect ordinary users, are
listed in our Bug Tracking System at

  http://pari.math.u-bordeaux.fr/cgi-bin/pkgreport.cgi?pkg=pari

Bugs will be reported there as they are found. Note that pari-2.1.7 (stable),
whose focus is stability of previously working code, is slower and, to our
knowledge, less robust than the present release.

P.S2: The Changelog:

Done for version 2.2.11 (released 19/10/2005):
  Fixed
    1- a()=b(1,) --> error message
    2- agm(-1.0000000004656,1) --> oo loop [Bug #214]
    3- sdivss_rem(x,y,&rem) did not set rem, contrary to the documentation
BA  4- ellzeta(ellinit([0,0,0,0,1]),1) --> gerepile error
    5- random() was less random on 64 bit machines
    6- typing 0.e-28 returned 0.E-38 (!)
    7- ellminimalmodel(e).a2 was not always in {-1,0,1}
    8- check arguments in elllocalred
BA  9- [GP2C] type-checking codes generated for some types was wrong.
   10- stray output: (a()= for(i=1,1, return);) a() --> 0
   11- qfminim & qfrep didn't check their arguments
   12- [library:] pariputsf() and GP print() used different output formats
   13- nfdisc(x^4 - 2947*x^2 + 1553545) --> SEGV  [ incorrect test for gcd
       in Round 4: gcmp1(d) --> degpol(d) == 0 ]
   14- forvec(v=vector(4,k,[1,4]),,2) -> oo loop [bad initialization]
   15- eta(x << 1) used far too much accuracy in intermediate computations
GN 16- MPQS warning "factoring this number will take several/many hours" now
       assume more current hardware.
   17- off-by-1 error in initprimes0 allocation [Bug #237]
       -> SEGV in default(primelimit,155100 + 41*7)
   18-[Cygwin] incorrect links created by 'make install'
   19- a( <Return> --> oo loop in parser [Bug #240]
   20- at \p366, the last digits of Pi were wrong [ not enough iterations, from
       2.2.9, A-2]. [Bug #238]
GTo21- wrong prototype for qfrep
   22- factornf(P, T) did not accept non-monic T [Bug #241]
   23- lngamma(1E+10) --> "Impossible assignment I --> S"
   24- "couldn't deal with this field" errors in bnfinit/quadclassunit for
       tiny discriminants, huge Bach constants (e.g. 12), and unlucky random
       seeds. Remove arbitrary limits and let the loop run to completion.
   25- neither freadseq() nor readGEN() were able to parse '{' / '}' [Bug #216]
   26- accuracy problem in polroots (--> division by zero) [Bug #252]
   27- acos(x < 0) --> result off by Pi [ introduced in 2.2.9-A3 ]
   27- ellrootno(e,p) incorrect in the case of good reduction [#262]
   28- (rare) "impossible assignment I-->I" in contfrac
   29- typo in qfbclassno's hash function (when D < 0, function can't handle 0).
       qfbclassno(-948) --> division by 0 [GMP kernel]
   30- [Makefiles:] the behaviour of '//' as path leader is undefined. Make
       sure path prefixes are not '/' [ e.g $prefix/lib --> //lib ]
   31- pollead(u*v + (v+1)/v, v) --> 'x' [ should raise an error ]
GN 32- problems in MPQS : some factors missed e.g factor(2^263-9) -->
       expensive extra runs ( + possible stack corruptions when many factors
       found simultaneously ).
   33- tanh(x) was actually computing tanh(|x|) for real x ([#269] from 2.2.8)
   34- [MacOS X] dlopen is now part of the system library. Don't redefine
       dlopen in darwin.c if HAS_DLOPEN is defined.
   35- fix Trager's trick in factorff (from 2.2.10)
   36- rnfisnorminit(quadpoly(145,y),quadray(145,1)) --> stack overflow [#273]
   37- matker([1,2,3;4,5,6]*1.) --> [;]  (missing 1 vector)
   38- rnfconductor(bnfinit(y),x,1) --> error [#277]
   39- gcc-4.0 miscompiles PARI on ix86 [#274]
       ( http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23453 )
   40- truncate(1/4/x+1+O(x)) -> (x + 1/4)/x instead of (4*x + 1)/(4*x) [#276]
   41- bitneg(2^32-1,32) -> corrupt integer [#279]
   42- typo in rnf_is_abelian [#277]
GN 43- several minor fixes in mpqs.c
BA 44- ellrootno(e,2) was wrong for curves of Kodaira type 3 and -7.
                                                           ([#212] from 2.2.9)
BA 45- galoisfixedfield() was not robust enough ([#256, #228 from 2.2.9)
   46- tanh(-10^20) --> error instead of -1  [tanh(10^20) was treated properly]
BA 47- wrong rounding in wr_float: with default(format,"f0.10")
        1.23456789049999999997 -> 1.234567891
GH 48- typo in thue.c:MiddleSols() --> missing solutions [#264]
   49- default(prettyprinter,,1) --> t_POL instead of t_STR [#296]
BA 50- truncate(1/x+O(x)) --> SEGV
   51- overflow in Flm_gauss (when solving triangular system) --> wrong result
       [#284]
   52- isprime(25, 2)
         *** impossible inverse modulo: Mod(5, 25).
       although it's useful to get a factor, it's not nice to raise an error,
       since 'trap' then becomes mandatory. Removed this feature: the factor
       is silently discarded (exceedingly rare anyway).
   53- (-1)^(any integer >= 2^31) --> -1 [ from 2.2.9 ]
GH 54- zncoppersmith(x,1002,1001) --> SEGV [#221]
   55- subst(1+O(x),x,x^2+O(x^3)) --> SEGV [#287] (patch by MSo)
       subst(1+O(x^2),x, x^2+O(x^3)) --> 1 + O(x^3)  [ should be O(x^4) ]
   56- component() didn't work on lists [ SEGV ]
   57- quadclassunit(D,, [c0 > 6]) --> weird error message
   58- weird errors in bnrstark [#285]
   59- (x^0)^2^31 --> length overflow
   60- polroots(pollegendre(51),1) --> SEGV [#293]
   61- print({}) --> oo loop
BA 62- when choosing between (p-1) and APRCL, isprime() required a complete
       factorization of p-1, whereas accumuluting factors up to sqrt(p-1) was
       enough. (e.g 2^127 - 1)
BA 63- function name not always properly reported on interrupt (e.g if, while)
   64- content([-1]) --> -1
   65- memory leaks in quadclassunit (#318)
BA 66- [Configure] check that 'readline' is not an EditLine wrapper
       [ ==> compilation failure otherwise ]
   67- Str() --> junk string (uninitialized data) (#326)
   68- arg(I*O(7^5)+1) --> junk, exp(3*I + O(3^5)) --> junk. (#328)
   69- powiu(2, ulong n) called int2n(long n), incorrect for huge n (#331)
   70- Qfb(8,-4,1)*Qfb(5,-4,1) --> Floating Point Exception (BIB, #332)
   71- t_QRF distance component was evaluated using an unstable algorithm,
       possibly leading to catastrophic cancellation (#333)
   72- dbltor did not recognize Infinity, NaN, or unnormalized numbers.
   73- makerfrac(1,quadgen(24)*x^0)%b --> SEGV, where
       GEN makerfrac(GEN p,GEN q) {
          GEN z=cgetg(3,t_RFRAC);
          z[1]=lcopy(p);
          z[2]=lcopy(q); return z;
        }
BA 74- exp(x) gave imprecise results at huge accuracies for expo(x) >> 1.
   75- valuation(x,p) using a divide & conquer algorithm would kill the
       session if p = 1
   76- (2 + O(2^8))^(-1/3) --> SEGV [#341]
   77- exp(0.E100) --> invalid GEN
   78- stack corruption in gsubst [#343]
   79- Pol([Mat(0.1)],x)^3. --> crash [#346]
   80- besseljh(0,2^65) --> crash [#340]
BA 81- [plotQt:] ^C while hi-res window is present would crash the session
   82- Strtex(Vecsmall) --> SEGV [#348]
   83- infinite loop in zeta() [catastrophic cancellation in get_xinf() ]
   84- infinite loop in nfdisc() [#350]
   85- Mod(1,2)*x / (1/2) --> incorrect t_POL
   86- qfbsolve forgot some solutions: qfbsolve(Qfb(2,1,3),3) --> 0
   87- multiplying ideals could lead to factoring big integers (failsafe
       algorithm in idealtwoelt, when random trials don't work): fix
       idealtwoelt.

  Changed
BA  1- FpM_FpV_mul is renamed to FpM_FpC_mul, Flm_Flv_mul to Flm_Flc_mul and
       FlxV_to_ZXC to FlxC_to_ZXC, Flv_to_ZC to Flc_to_ZC, FqV_to_FlxC to
       FqC_to_FlxC, zv_to_ZC to zc_to_ZC
BA  2- FpXV_FpV_innerprod renamed to FpXV_FpC_mul and FlxV_Flv_innerprod to
       FlxV_Flc_mul
    3- retain 'CHANGES' revision after 'make distrib'
GN  4- extensive re-tuning in MPQS (all sizes) and avoid "sizing marginal,
       index1 too large" warning
    5- rename globalreduction -> ellglobalred, localreduction -> elllocalred
    6- taniyama(e) is deprecated. Use elltaniyama(e, prec) instead of
       old = precdl; precdl = prec; x = taniyama(e); precdl = old;
    7- [bnfinit] retune compute_R to try and detect cheating with Bach's
       constant.
    8- rename lisexpr -> readexp, lisseq -> readseq, flisexpr -> freadexpr,
       flisseq -> freadseq
    9- rename Fp_gener -> gener_Fp, Fl_gener -> gener_Fl
   10- change TeX output so that it's easier to handle:
       - replace \over by \frac [ most people use AMS styles which forbids
         \over, not plain TeX, which doesn't have \frac ]
       - remove many extra braces { }  [ would prevent line breaks ]
       - insert carriage returns
   11- [GP handling of print1()] get rid of 'added_newline' hack, replace by
       monitoring in pariputc/pariputs.[#243]
   12- do not install libpari.a.xxx [ include files are not versionned either
       and libpari.a is useless without the correct ones, contrary to .so ]
   13- rename gtrans_i -> shallowtrans, concatsp -> shallowconcat.
   14- add GC in parsing loop for huge input vectors [ needs roughly 2 or 3
       times less memory ]
   15- implement pari_is_dir() using stat() instead of opendir()
   16- moved defaults from gp/gp.c to language/default.c [ -> into libpari ]
   17- moved input_loop to language/es.c [-> into libpari ]
   18- when called as 'gp --test', disregard actual terminal dimensions
   19- allow ellinit over any ring (support only basic operations)
   20- allow ellchangecurve on e = [a1,a2,a3,a4,a6].
   21- typecast cleanup: move most of paricast.h to pariold.h
   22- rename readGEN -> gp_read_stream, freadseq -> gp_read_str.
       freadexpr/readexpr are deprecated, use gp_read_str/readseq
   23- make sure GP_DATA is always defined --> default() becomes available
       in libpari
   24- make gnil public
   25- change content() so that it always returns the gcd of all entries (as
       documented). Used to return the gcd of all _contents_ of the entries
       of a t_VEC/t_COL/t_MAT.
   26- backport into quadclassunit some of the bnfinit improvements
       [specifically, change subfactorbase, #298]
BA 27- rewrite rectdraw in an object-oriented way [ reduce code duplication
       in hi-res plot routines ]
BA 28- change the semantic of includedir to not include the pari suffix.
       Instead /pari is automatically added by make install.
   29- improve plindep (use lllintpartial and floating point LLL)
      + allow lindep with p-adic entries
BA 30- allow relative paths in Configure --with-xxx directives
BA 31- allow sinh, cosh, tanh with t_PADIC arguments
XR 32- bnrstark(): try harder to find solutions [increase precision faster #255]
BA 33- rename coefs_to_xxx() to mkxxxn() for xxx in {vec,col,pol,int}.
   34- semantics of gcd with inexact zeros: now gcd(0., a) is 1 [used to be a
       and led to problems: e.g 0./(1.*a)/(1.*a) not simplified ]
   35- warn if 'perl' is found but doesn't seem to work
   36- forbid the f'(x) construction when x is not a constant type [#327]

  Added
BA  1- polgalois(): 4th component: transitive group name following GAP4
BA  2- new functions ZX_add, ZX_sub, ZX_neg, ZX_Z_add, ZX_Z_mul
BA  3- new functions FpC_to_mod, FqV_to_FlxV, FpC_red
    4- member functions r1, r2
    5- functions factoru(), factoru_pow(), powiu(), powuu().
    6- symbolic link $MANDIR/gp-$version.1 -> $MANDIR/gp.1
    7- new functions shallowcopy, shallowconcat, shallowtrans, vecslice,
       vecpermute, vecslicepermute, rowslice, rowpermute, rowslicepermute
BA  8- support for gp2c-run on cygwin
BA  9- new optional package 'elldata' and new GP functions ellsearch and
       ellidentify to access it.
BA 10- support for ellinit("<curve name>") through elldata.
   11- new functions vec_ei / col_ei
BA 12- new function  FpC_Fp_mul, FpV_FpC_mul
BA 13- new functions const_col, const_vec, vec_is1to1, vec_isconst
   14- new function gp_read_file
BA 15- new function substvec
BA 16- new divide_conquer_assoc (make divide_conquer_prod thread-safe)
   17- p-adic zeta, cos, sin, tan, cotan
BA 18- p-adic gamma
BA 19- new routine readvec()
-- 
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]