Karim.Belabas on Mon, 30 Apr 2001 19:40:50 +0200 (MET DST)

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


Dear PARI lovers,

  I have announced a BUGFIX release 2.1.1 on pari-announce, which should
eventually reach your mailbox if you are subscribed to it (probably after
this message: moderated lists are slow by nature...).

  I wanted to let you know that a new development cycle, pari-2.2, has
started. It has been available through the CVS repository for a while, but
I've made a snapshot of my current sources as pari-2.2.0.alpha. You can find
it at


[the corresponding CVS tag is release-2-2-0]

This in an ALPHA version, so the usual caveats apply: it is unstable,
probably contains severe bugs, and is not properly documented [one of the
TODO items is about expanding and improving the libpari documentation]. It
is definitely NOT adequate for site-wide installations.

On the other hand, it fixes problems which could not be fixed in the stable
release since their solution involved changing large amounts of sensitive
code, or because they were deemed not important enough compared to the hassle
of backporting the corresponding patches.

If you are interested in testing out the ALPHA releases, it will be simpler
to use the CVS repository than to apply numerous patches or download complete
releases after each announcement, so have a look at the CVS.txt file if you
have not already.  This series will remain unstable for a while, as new
features are introduced; I don't have a definite schedule for the next cycle
of stable releases (pari-2.3) yet. 


The most important modifications deal with modular computations, which
were a prominent TODO item. So far, the only affected public functions are:
factorisation over Q[X], polcompositum(), and factornf()  [where the old code
had severe efficiency problems]. But a large number of internal functions
have been written: rational number reconstruction, modular univariate and
bivariate resultants, gcd over number fields, modular polynomial arithmetic
esp. in small (< 2 ^ BITS_IN_LONG) characteristic [none of this is documented

This will be generalized quickly as thresholds are being worked out [a
number of functions based on the subresultant algorithm behave very
satisfactorily for small degrees and height].  For instance, the new modular
code to compute the characteristic polynomial of an algebraic number is five
times faster than the current one when the degree is about 20, and twice
slower for quadratic fields.

The next natural target is to implement efficient finite fields [esp.
corresponding to computations modulo a prime ideal in number fields: the
current *modpr functions are very inefficient].

Have fun,


P.S: The complete Changelog: [all entries from the BUGFIX release pari-2.1.1
are included]

Done for version 2.2.0 (released 30/04/2001):

BA  1- gpflog could print some lines twice
    2- return() could forget objects on heap
    3- polhensellift didn't accept factors which were not squarefree
    4- Configure missed some shared libraries (when only .so.version was there)
    5- possible symlink attacks against mpqs()
    6- internal requests for precision of bnfinit(x) [ = Q ] could yield SEGV
    7- compatible = 3 not taken into account when reading a file
    8- cbezout(0,0) = 1 (should be 0)
    9- when lines > 0, output driver didn't reset properly after user output
   10- nfdisc(x^5+2*x^4+3*x^3-3*x^2+122*x-1) --> impossible inverse
   11- bug in gcc-2.95 -O3 -fomit-frame-pointer [Linux]: SEGV in quicksqri
   12- addrfrac: could return a t_RFRAC whose denominator wasn't a t_POL
   13- bnfcertify (zimmertbound): off by two error when reading bound
   14- very inefficient Hensel lift (used ideas from Shoup's NTL)
   15- incorrect assumption on factor degrees in polcompositum (SEGV in rare
   16- Vec(VECSMALL) --> incorrect object
   17- galoispermtopol didn't check permutation length (--> SEGV on bad input)
XR 18- rnfinit(nf, T) -> bug in multiplication if nf = Q
   19- Pol(cotan(x)) -> SEGV
   20- factor(tough polynomial over Z[X]) --> possible SEGV when padic
       precision is increased [e.g factor(polzagier(60,0))]
XR 21- bug in ideal bound computation in rnfnormgroup
   22- bnrisprincipal(...,y+z) --> SEGV
   23- GP could forget about a function whose redefinition was stopped by a
       syntax error (sometimes with a delay!)
   24- bnfisnorm result would include pols in MAXVARN: e.g. Mod(1, #)
BA 25- pbs in Fp_factor_irred (factoring over Fq a pol. defined over Fp)
   26- missing macros for gphelp (tex-mode) in chapter 5
   27- nfsubfields(nfinit(polcyclo(13))) --> impossible inverse Mod(0, 29)
   28- argument checks for element_mulid, nf_get_r1 (access to nf.sign)
   29- typo in quadhilbertimag (SEGV for very large discriminants)
   30- wrong precision used in numerical derivation
BA 31- isprime(n < 2, 2 or 3) gave wrong result
IZ 32- \r C:\a.gp wouldn't work     [ : and \ forbidden... ]
BA 33- bad PARI prototypes in init.c [were confusing GP2C]
XR 34- nfdisc: fixed cache system in nilord (esp. precision handling)
BA 35- nfgaloisconj(polcyclo(40)): accuracy lost
       nfgaloisconj(polcyclo(11)+1): oo loop
IS 36- typo in squfof tuning on 64bit machines
   37- -lm doesn't exist on MacOS X
BD 38- typo in src/kernel/l0asm.c: ulong not recognized by MSVC
IZ 39- TeX quasi-parsing in gphelp
   40- ^C in gp would kill an xdvi launched by gphelp via ?? [detach from tty]
   41- factor(P in Z[X]): wrong bound used in LLL_cmbf --> "no factor"
   42- one extra blank line printed with some error messages [errcontext]
   43- no typechecks in subgrouplist and forsubgroup
   44- round4 [dbasis]: make sure polmodi gets a polynomial, not an int (SEGV)
   45- various typos in rnfkummer (SEGV or 'non-maximal rank in nfhermite')
   46- Configure -l (no argument) didn't work anymore
BA 47- incorrect quoting in src/make_vi_tags (make ctags)
   48- 1/[;] --> error, whereas [;]^-1 --> [;]  [ now, allow 1/[;] ]
   49- ??real  only gave the help on t_REALs, not on real()
   50- eigen: "missing eigenspace" [roundoff pb in ker() compared to exact 0]
   51- error messages on GP metacommands (\...) indicated wrong context
   52- bnr functions might fail with "indefinite matrix in lllgram" [prec pb]
   53- nfhilbert(nf,a,b, pr | 2) would give bogus result if nf in variable 0 (x)
MD 54- real(1 / (a+quadgen(...)*b)) was a / (a^2 + b^2)  [assumed quadgen(-1) !]
   55- wrong HNF (reduction not finished) when nblines >> nbcol [hnf(,0) only]
   56- rare problem in isprincipal (large non Galois base field)--> wrong 
       result (generators not required) or infinite loop.
   57- compatibility problems with readline-4.2 (build would fail)

    1- DOS distribution archives (GPM removed)
XR  2- round 4 algorithm: compute characteristic polynomials via Newton sums
XR  3- nffactormod now calls factmod / factmod9 when possible
XR  4- don't compute discriminant in nffactor/nfroots + better bounds in nfsqff
    5- input loops rewritten (filtre more flexible + unified common code)
    6- better modular arithmetic for polynomials (+ uniformized names)
    7- bnfinit: "looking hard" part overdone in random relations. Tuned down.
XR  8- added flag in rnfconductor to check extension is abelian (under GRH)
    9- made Vec("pari") return ["p","a","r","i"] instead of ["pari"]
   10- renamed library function gsize() to sizedigit()  [conflict with gtk]
XR 11- bnrstark: check if N0 is too large (=> computation impossible)
IK 12- let lisGEN() return NULL when EOF is met (was oo loop)
   13- algorithm for zeta(), gamma() [initial GP code by HC]
   14- improved rnfnormgroup() [reduce number of calls to isprincipal]
IZ 15- flags for OS/2 build + use generic [pre|suf]fix for object files
IZ 16- readline: hit_return() would not work after Esc-H
                 extend online help recognition capabilities (Esc h/H, F1)
   17- install the whole distribution (see ?12)
   18- clean up in the bnrdisclist ray class group internal functions
   19- naming scheme for development versions library: libpari-2.2.so.0.0.0
   20- new Configure flags --share-prefix, --host
   21- allow library functions to return NULL to the GP interpreter
   22- let A^-1 and 1/A return a left inverse of A if it exists [A had to be
   23- retuned factorization over Z[X] (+ "d-1 test" in naive recombination)
   24- sort factorpadic() output

    1- files README.WIN, config/[arch-osname|locatesymbol], doc/tex2mail.1
GN  2- Jebelean extended gcd + rational number reconstruction
XR  3- new flag to rnfconductor (check extension is abelian)
IZ  4- set of default colors (boldfg)
    5- modular polynomial arithmetic ([uni|bi]variate resultant over Z,
       characteristic polynomial of algebraic numbers, nfgcd).
       [undocumented, experminental]
    6- Pohlig-Hellman discrete log over Fp and nf.zk / pr

    1- start using the new modular functions [polcompositum]
    2- mpsqrtnmod (modular n-th root of 1) uses Fp_shanks now

    1- obsolete undocumented functions oldidealinv, idealinv0
    2- buggy function hnfhavas (hnflll is a better alternative)

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://www.parigp-home.de/