Karim BELABAS on Thu, 18 Oct 2001 17:59:03 +0200 (MEST)

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

pari-2.2.1.alpha released

Dear PARI lovers,

  I have announced a BUGFIX release 2.1.2 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've made a snapshot of my current sources as pari-2.2.1.alpha. You can find
it at


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

This in an ALPHA version, so the usual caveats apply: it is unstable,
probably contains severe bugs, and is not properly documented. It is
definitely NOT adequate for site-wide installations.


The primary goal of this snapshot is to remove patches from the pipeline so
that new submissions can be made without risks of conflicts. The Changelog is
too long already, I'll try to make development snapshots more regularly
from now on, twice a year is definitely not enough [of course, you should get
up-to-date CVS sources before starting any important work in any case].

There are no obvious major additions, but for the development of modular
arithmetic introduced in 2.2.0, and improvements in nfsubfields (much faster,
don't need an 'nf' anymore) and bnr* functions (esp. over fields with large
class number).

Cute extensions:

  * writebin(file, x) : to write x in "binary format" (entire internal
  structure is preserved, contrary to write(), and it's much faster to save
  and load). With no 'x' argument: saves all user variables from the session
  [their names are preserved also!]

  * subst(P, x^n, y) now works [it's not possible to substitute arbitrary
  algebraic expressions, only monic monomials].

  * an EXPERIMENTAL inlined alpha assembler kernel (G. Hanrot, partly adapted
  from gmp), which is disabled unless you also have a rather recent gcc (at
  least 2.95.3).

Note that the format of the MACHINES file has slightly changed. In particular
it now includes the compiler version. I'm especially interested in MACHINES
entries for the alpha processor, due to the new alpha kernel.

Have fun,


P.S: The complete Changelog: [all entries from the BUGFIX release pari-2.1.2
as well as all patches posted since last snapshot are included]

Done for version 2.2.1 (released 18/10/2001):

    1- typo in factornf (factor of degree 3 --> error message)
    2- rnflllgram(), idealinv() didn't check their arguments
    3- [readline] \r<TAB> would complete using files matching r*
    4- wrong result in ZY_ZXY_resultant when degree dropped in ERS
    5- factor(x^2 + I*1.) --> stack corruption
    6- \r directory was silently accepted
    7- check arguments in polcompositum()
TH  8- [Cygwin:] fixed paths for readline on cygwin 1.*
XR  9- possible overflow in ComputeCoeff [ bnrstark() ]
   10- numtoperm(2,x) --> SEGV [check arguments now]
   11- rnfkummer could fail with "missing units"
   12- factornf(P, non-monic t) --> error
   13- forsubgroup/subgrouplist didn't check their arguments nor accepted SNF
XR 14- typo in nilord4 --> SEGV, e.g.
       nfdisc(x^16-363*x^14+53550*x^12-4091823*x^10+170172414*x^8 \
   15- some messages didn't distinguish between MBytes and millions of Bytes
   16- typo in BuildTree [hensel lift]: SEGV
   17- (rare) oo loop in polroots, e.g. x^5-2*x^4-32*x^3+72*x^2+218*x-491
   18- oo loop in ellpointtoz on certain rare inputs
   19- stack corruption in factorff
BA 20- better interface for galoissubcyclo
BA 21- galoisfixedfield(,,2) now works with non Galois subfields
BA 22- nfgaloisconj now use `d-1'-test + better strategy
BA 23- fix accuracy problems in vandermondeinverse
   24- missed some simplifications when handling multivariate t_RFRAC
   25- [Cygwin:] incorrect default 'path' (used : instead of ;)
   26- element_sqr didn't check its arguments (SEGV if bad input)
   27- possible stack corruption in polroots (+ improved GC there)
   28- typo in nfsubfields (incorrect bound: could miss a subfield)
   29- typo in zsimpjoin (concat error in bnrdisclist, intr. in 2.2.0)
IZ 30- typo in Configure [rl_save_prompt and _eprintf not found in target libs]
MD 31- oo loop in ellap [uninitialized array length in apell1]
   32- stack corruption in addfrac [wrong result for large denominators]
MD 33- resmod2n [called from powmodulo] could return unnormalized integers
   34- not enough GC in nfinit for huge degrees [get_mul_table]
   35- intformal(1/2/t^2) --> apparent oo loop
   36- polredabs(degree 1 polynomial) --> x  [could be very slow]
   37- polredabs() could use a basis which was not LLL reduced
BA 38- pariformats (e.g %Z) incorrect on 64bit machines
   39- polhensellift(x,[x,1],2,2) --> "bug in multiplication"
   40- glitches in readline completion (random() * ne<TAB) --> inserted args)
IZ 41- CLK_TCK may reside in time.h
   42- misleading definition for ?omega / ?bigomega
   43- on \q, "Good bye" --> Goodbye
   44- install() accepted gpnames which were not valid identifiers
   45- bnfinit(x^4+65,,[.1]) --> SEGV   (whenever c < c2)
   46- when host badily configured (~ not expanded), gp would die on startup
XR 47- factorpadic(, not a prime, ) --> SEGV
   48- matrix(2,2,i,i, ...) allowed, with weird result
BA 49- better arguments checking for galoisfixedfield
   50- psi(I) --> incorrect type in rtodbl
XR 51- increase precision automatically when needed in quadhilbertreal
   52- idealstar(bnfinit(polcyclo(5)),11).clgp --> stack error
   53- default(format,"g0.4"); 3./10 --> 0.300004577  [now: 0.3000]
   54- subst() didn't check its arguments (e.g SEGV on t_STR)
   55- qfbclassno(x < 0): wrong algo when x non fundamental
   56- obscure bugs with types FRACN/RFRACN [when simplifies to INT/POL]
IZ 57- readline history: while inputing continuation lines, the partial
       command was not put into history until full command was run
   58- not enough GC in polroots (dft) for huge degrees
   59- Cygwin: don't try to build gp-dyn.exe [crashes]
   60- use vsnprintf to fix a long-standing bug in PARI output (using formats)
       used a fixed-length buffer that could overflow. If vsnprintf is not
       found by Configure, the bug remains.

    1- removed useless parameter prec in many bnr* and rnf* functions
    2- major update of bnr* functions [use elements in factored form]
    3- use /tmp instead of /var/tmp as default tmp directory [faster on Solaris]
BA  4- Fp_PHlog (Pohlig-Hellman) can use a factorization of the subgroup order
    5- major update of buchall() [bnfinit]: accurate precision increase, use
       multiplicative archimedean components (fewer logs), cleanup
    6- [libpari:] rename permute/permuteInv to GP names numtoperm/permtonum
    7- scalar + [;] --> error  [made it [;]]
BA  8- factorback, chinese, lcm and gcd now accept a single vector
    9- Use I \cap Z instead of NI in hnfideal_inv
   10- improved issquare(t_INTMOD)
   11- improved subresultant routines (new function pseudodiv)
   12- command-line options to Configure (installation directories)
   13- rnfequation: use modular (bivariate) resultant
   14- polynomial gcd (srgcd): uses modular algo (modulargcd,nfgcd) if possible
   15- unified internal hnf* functions
   16- improved nfsubfields [Hensel lift, allow nfsubfields(pol) instead of nf]
   17- merged all "integer logarithms" + "safe ceil" functions (mylogint,
       get_e, floor_bound, myceil)
   18- readline: TAB on empty parentheses following a function name has the
       same effect as M-h (used to insert args).
IZ 19- faster computation of prime number table [better cache use]
IS 20- obscure compiler bug in rootpol.c:max_modulus() [don't modify tau]
   21- make bench ('elliptic'): explained [BUG] message
   22- allow lift(t_PADIC)
   23- faster polroots for Q of the form P(x^k)
   24- allow subst(t, x^n, x)
   25- ?user_fun: do not include function text if help available from addhelp
       [always include it for ??user_fun]
   26- default values for used defined function arguments are evaluated when
       the function is called [used to be "when it's defined"]
   27- allow subgrouplist(znstar(5)) [didn't accept groups in general form]
   28- taught GP about GP2C-style type declaration [ignored]
   29- 0. [realzero()] is now coded on 2 words (was 3, with third one ignored)
IZ 30- readline history: lines are remembered as they were input (whitespace
       was deleted)

BA  1- function pith() [= pi(x), naïve implementation]
    2- new target for Makefile: gp.dbg
BA  3- library functions FpX_roots_to_pol, FqX_roots_to_pol
BA  4- library function FpX_FpXQ_compo (Brent & Kung)
    5- library function FpM_inv, FpM_gauss, ZM_inv, QM_inv
    6- library function primitive_part
IZ  7- readline: allow switching readline editing on/off [for commandtools]
IZ  8- readline: F1 has same effect as M-h, and F1F1 as M-H (short/long help)
    9- function writebin
XR 10- new error message "precer" (precision too low in...)
   11- allow minimal handling of t_VECSMALL under GP
IZ 12- add error messages (as in err(shier2)) to emacs tag file
   13- add error messages (as in err(shier2)) to vi tag file
IZ 14- add flag to shift() to enable consistency with 2-complement semantic
IZ 15- default 'prompt_cont' for continuation lines
IZ 16- default 'readline' to switch readline on/off in readline-able binaries
IZ 17- capabilities to 'bittest' (return bitmap, 2-complement arithmetic)
GH 18- inline assembler micro-kernel for alpha + recent gcc (at least 2.95.3)

    1- obsolete functions twototwo, threetotwo, threetotwo2
XR  2- error message truer2 (superseded by precer)

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/