Karim BELABAS on Thu, 7 May 1998 18:19:33 +0200

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

pari-2.0.8 update.

Hello all,

  here's yet an other update (still Alpha)


The diff file with previous version 2.0.7.alpha can be found at


As Gerhard put it on his Website:

>  PARI-GP will make a star appearance in the Special Session on Mathematical
>  Software of the ICM'98 in Berlin, probably on Friday, August 21, 1998
[see http://www.zib.de/Symbolik/ICM98]

Since I'd like to have a stable release ready by that time, I'm freezing all
changes. The next update, scheduled early next month, will be bug-fixes only
and WILL be a Beta (famous last words).

I think many important problems were fixed this time so if you've been
waiting to upgrade for some time, please try out this one.

Enjoy !


P.S: The Changelog
Done for version 2.0.8.alpha (released 07/05/98):

    1- improved garbage collecting in polroots
    2- zetak did not check its nfz argument properly.
    3- warnings from MSVC
GN  4- isprime() did not work for numbers in [2^(BIL-1), 2^BIL-1].
GN  5- precprime sometimes missed a prime.
    6- quaddisc(x in Q\Z) did not always work.
    7- powering of zero series
    8- factorization of null matrices (SEGV).
    9- mateigen for non-diagonalizable matrices (SEGV).
GN 10- infinite loops in some arithmetical functions when arg = big prime
GN 11- cleaned up paridecl.h
   12- gimag/greal for type t_RFRAC/t_RFRACN (fix: Terje Sparre Olsen)
GN 13- ordinal numbers to number components seen through \x
HC 14- lllgram: incorrect gabage collecting in first "warnmem".
   15- theta(q exact, z) entered infinite loop
   16- typo in gdiventres (x<-->y in last line).
MS 17- gtrunc for p-adics when valp(x) < 0
MS 18- polresultant(u+v,u-v,v) => x + u;  polresultant(u+v,u-v) => 2*u
MS 19- issquare(Pol), where Pol(0) = 0
IZ 20- use 15 points (by default) for recursive plotting as documented
   21- matsnf for singular matrices (supersedes a patch by GN)
LG 22- micro kernel support for HPUX
LG 23- compilation with Sun's C++ compiler (version 4.2)
   24- SEGV when factoring polynomials of huge degree (removed expos[100],etc)
   25- garbage collection in gpuigs
GN+BH 26- micro kernel support for ix86 running SunOS.
HC 27- handling of 0x0 matrix in some hnf* functions
HC 28- bug in discrayabslist* (try bnrdisclist(bnfinit(y^2-2),200,,1) in 2.0.7)

    1- moved hnf and snf from base1.c to alglin2.c (base1.c too big).
    2- use gexpo in linear algebra functions when entries contain real
       numbers (work for inexact polynomial entries now). Still does not
       work properly for p-adics.
GN  3- in sigma() fall back to numbdiv() or sumdiv() when k < 2.
    4- made comments started in file through read("file") local to file.
       (not so \r file)
    5- valuation(0) now returns VERYBIGINT instead of raising an error.
MS  6- simplified gegal in case t_FRAC
IZ+GN 7- faster initprimes, using less memory
LG  8- improved Configure

    1- new function write1.
MS  2- new Lisp-like quote operator 'a
IZ  3- readline: electric parentheses, move across balanced expressions,
         add formal arguments to completion of GP command (when unique).
    4- micro-kernel for hppa
    5- quiet mode (gp -q) to suppress headers

Done for version 2.0.7.alpha (released 21/03/98):

XR  1- SEGV in get_regulator for imag. quad. fields
    2- "beautified" output (still ugly, less buggy, ok for simple objects).
    3- error during "print()" could change output default.
    4- SEGV when syntax errors in gprc.
    5- make install failed when libpari.$sodest had been removed.
    6- moved term_width and term_heigth to es.c
HC  7- inefficiency in mulii (Karatsuba used too easily).
XR  8- many problems in stark.c
XR  9- bugs in rnfpolredabs (+ new flag)
GN 10- _many_ typos in tutorial and user's manual. New, much nicer, layout.
   11- whatnow not robust enough + faulty call by err_new_fun ==> SEGV
   12- idealadd treated incorrectly the 0 ideal
   13- default(realprecision) gave wrong value when format had been changed.
   14- bnfs structure was inefficient for applications (inverted 2nd comp.)
   15- buffersize was incorrectly updated during complicated read()
   16- one-line comments "ignored" if buffersize too small.
   17- using eval on object containing killed variables caused a SEGV.
   18- contfrac lost last term when first parameter was rational and
       numerators were supplied.
   19- problems when dividing with polynomials/series whose leading coeff is
       non-exact 0.
BD 20- missing #ifdef ZCAT in es.c
BD 21- check in paricom.h whether min / max are already defined
BD 22- universal_constants freed early in freeall() (problems on Windows NT)
BH 23- update Makefile.dos (nf.h --> parinf.h)
BH 24- changed kernel/ix86/level0asm.c (FUNBEGIN/FUNEND + ALIGN)
   25- cleaned the gauss_pivot functions + garbage collecting in gauss().
   26- mathnfmod did not check its second argument.
   27- since 2.0.4 (item 24) install did not work anymore on FreeBSD + gp-dyn
   28- cleaner malloc in plotX.c (to remove Warnings when debugmem > 0)
   29- slightly optimized matdet (gsub --> gadd(,gneg))
   30- ? x=1; Pol(1)
         ***   variable name expected: x,n,
       is fixed everwhere (wherever an optional variable name is expected).
       setting "x" to some value is now safe.
IZ 31- nicer looking plot() function
   32- warnings while building for m68k arch.
   33- sqrt(Mod(1,2)) went into an infinite loop.
   34- ?? did not resolve aliases.
   35- besselk near integers entered an infinite loop
   36- p-adic sqrt (bad valp)
   37- hnfmodid could output wrong results (wrong diagonal) and wreck the
       powering of prime ideals
   38- added garbage collecting in izeta.
   39- ??a_number now works as gphelp.
   40- in prettymatrix format, matrices 0xn and nx0 are always printed as [;]
   41- 1 - "a" ==> SEGV

    1- reorganized output functions (es.c).
    2- have mulir check if integer is small.
    3- part of GENtostr inlined (check_output_length()).
HC  4- functions where it makes sense now admit an optional argument for
       "variable number" (intformal, deriv, things having to do with
       polynomials, etc)
    5- lines of any length can be input interactively (previously 1k at most).
    6- remove {} and \ from readline history
    7- improve treatment of sample programs in gphelp -d
    8- uniformized debugmem messages.
    9- simplify the coinit function (Michael Somos)
   10- changing the function set through default(compatible,) no longer
       resets installed functions.
   11- renamed nfker-->nfkermodpr, nfgauss-->nfsolvemodpr.
   12- simplified/extended dummycopy
   13- listput gives more informative error messages

    1- default: lines
HC  2- (made known to GP) functions nfmodprinit, nfkermodpr & nfsolvemodpr.
XR  3- function bnrstark
    4- install code D& (optional pointer).
    5- function name_var (to use after fetch_var)
    6- concatenation of lists (or row vectors) of objects (overloaded concat).
    7- ranges for vecextract (eg. vecextract(x, "1..3"))

    1- useless code 'F' in analyzer.
    2- perl directory (moved the files in ./perl to ./doc)
Done for version 2.0.6.alpha (released 22/02/98):

    1- \x (voir2) did not always print the correct number of words
    2- in changevar, type POLMOD, modulus and polynomial were interchanged.
    3- all occurences of former header file names in the documentation
    4- (from 2.0.5. item C5) using allocatemem in a script aborted file reading.
    5- expanded the documentation for bnrrootnumber
    6- factor(pol. with rational non integer coeff) could corrupt the stack
    7- Euler gave wrong results when prec > 80502 digits (cleaned up Pi as well)
    8- cleaned up ggcd, grando0, tayl and factorpadic2.
    9- is_scalar_t --> is_const_t in gvar/gvar2
IZ 10- Configure and example Makefile for OS/2
   11- idealprincipal did not accept n x 1 matrices
   12- idealhnf(nf,a,b) did not work for quadratic fields
   13- matsolve[mod]([;],.) could corrupt the stack or accept incorrect input.
   14- modules/galois.c unnecessarily included <sys/stat.h>
BH 15- symbol name problem in level0asm.c (cancels patch by IZ)
XR 16- fixes in stark.c
   17- cleaned all occurences of HIGHVALPBIT and HIGHEXPOBIT
   18- serconvol assumed main variable was "x"
   19- (x + O(x^2))^(3/2) gave a stupid error message
   20- types not checked correctly in gtoser
   21- check more seriously arguments to default()
   22- in Makefile: added some missing $(RM), changed an "ln -s" in $(LN)
   23- extra '\n' after print1 + sequence of warnings
   24- simplified a statement in addii()
   25- typo in classno() (classno(-200183): "division by 0") + cleaned classno
   26- all compiler warnings + most of lint's
   27- make install would not work anymore if emacs was not found
   28- HNF reduction not always complete when rank is small compared to dim
   29- gphelp -d did not handle ~ properly (+ cosmetic changes)

    1- unused files src/kernel/ix86/{asmi386.h,asmi386inline.h}
    2- useless macro gcopyifstack and global variable RAVYZARC
    3- useless error message gcder1
    4- useless (undocumented) function fasthnf

    1- simplified isonstack
    2- extended valid inputs for matsolvemod.
    3- don't output a '\n' before an empty matrix.
    4- mpsincos no longer static (so that it can be installed).
    5- reorganized gp_initrc() to cater for for non-UNIX arch.
    6- the "obsolete function" message now launches whatnow() directly.
       (and caters for the special cases "i" and "o" now).
    7- improved stack management in hnf/allhnfmod/fasthnf.
    8- moved powering functions to trans1.c
    9- disable logfile while reading .gprc
   10- (slightly) the output of whatnow()

BH  1- support for DOS build using EMX (dos directory + fixes)
    2- function cotan() and bernfrac()
    3- a code for pointers (&) for analyzer and install().
    4- ??readline now includes info about completion and online help

Done for version 2.0.5.alpha (released 07/02/98):

BH  1- LOCAL_HIREMAINDER added twice more in mp.c
LG  2- some symbols declared extern in gp_rl.c to avoid compiler warnings.
LG  3- isprime could corrupt the stack (isprime_proto removed)
LG  4- possible redeclaration of macro from system header (MAX in bibli1.c)
    5- typos in the user's manual
    6- removed unused error numbers and fixed their ordering in mp.s
    7- a ; or : after read/extern was not always correctly taken into account.
    8- a bug in polroots (possible SEGV in very rare cases) (Paul Zimmermann)

LG  1- (huge) reorganization of PARI kernel and headers
    2- logfile example in gprc.dft to take advantage of "time expansion"
XR  3- stark units module rewritten
HC  4- rnfpolredabs improved
    5- errors now cause GP to close any file it was reading instead of going on
    6- increased the static limit for the number of files opened simultaneously

XR  1- function bnrrootnumber

Done for version 2.0.4.alpha (released 26/01/98):

    1- recovery on startup was not correctly disabled.
GN  2- pari.el (see emacs/pari.el-changes)
    3- "" missing around a DLLD caused Configure to fail if shared library not
    4- component of GEN could be created before its root in gadd(t_SER, t_SER)
    5- nffactormod did not like big primes
    6- removed the `.' binary concat operator introduced in last update.
       (broke semantics). Instead Str() argument evaluated in string context.
    7- solve did not find some obvious zeroes (solve(x=-2,1,x) for instance)
    8- Configure -pg did not work
    9- 68k version didn't work: corrected mp.s, moved some code & defines.
   10- subst(x,variable(x),1) did not work.
   11- flag acted contrary to doc in matsolvemod
   12- in rare cases the prompt could still start at column > 1
   13- bnfissunit much faster now
   14- idealval could make mistakes with non-integers.
   15- Mat([1])[1,] gave a stack error
   16- zetakinit(x-1) as well
   17- zetakinit(K, even integer) gave a wrong result whenever r1(K)>0.
   18- typo in whatnow(hermite) and ?bnfsunit
   19- missing newline in user error after print1
   20- various typos and omissions in chapters 1, 2 and 5 of manual.
   21- (x-x)==(y-y) returned FALSE
   22- polfactormod(f,0) gave a SIGFPE.
   23- some missing #ifdef UNIX
BH 24- install() now works for gp-sta under Linux and OSF
BH 25- gcc Warnings in gp.c + es.c
BH 26- problems when installing from a different non-priviledged account
BH 27- inefficiencies in mpinline.h (replace memory access by a constant)

    1- when logging mode is on, record command line as well as result, and
       flush buffer often
    2- subdirectory lib now called misc. Changed some filenames in it.
    3- defaults psfile and logfile are now run through strftime
    4- for benches total time now taken into account ([BUG] was excluded)
    5- noerr is now the LAST error message (for CLISP interface)
    6- cleaned path expansion (default(path,...))
    7- renamed types.h and cast.h (prefixed by "pari").
    8- renamed type Rect to PariRect.
    9- kernel/kerPPC.s replaced by kernel/kerPPC.c (Dominique Bernardi)
   10- made static the arrays in check_isin() (for the Mac port)
BH 11- overflow/hiremainder use local variables as much as possible
   12- prompt not printed during a batch job, unless echo is set

    1- gplogfilter script in misc
    2- check for strftime in Configure
    3- support for alpha running linux (include portability fix on keralpha.s)
    4- file MACHINES
    5- made message for "array index out of range" error more precise.
    6- more frequent garbage collecting in mathnf
BH  7- inline asm for i386
GN  8- support for native compiler on AIX

    1- support for dynamic linking on AIX (did not work)

Done for version 2.0.3.alpha (released 13/01/98):

    1- rare bug in gadd (PADIC + PADIC) which caused one of the arguments
       to be overwritten.
    2- typos in refcard.
    3- galois.c still couldn't compile on the HP (_INCLUDE_POSIX_SOURCE)
    4- introduced in 2.0.2: item 14 used gexpo incorrectly (bnfinit sometimes 
       did not give units it could have computed).
    5- replaced INFINITY by pariINFINITY in rootpol.c (cancels Warning on OS/2)
    6- on OS/2, target ../gp-$dft in o.xxx/Makefile could not be built 
       (extraneous $exe_suff)
    7- command line switches so that one can enter them with or without white
       space (new function read_arg in gp.c)
    8- setdcolors so that it can't unset disable_colors if we are under emacs.
   11- random did not check its argument correctly (random(2^32) was accepted)
   12- b=10; for(a=1,b, b=2) exited immediately, whereas the upper bound is
       supposed to be evaluated only once.
   13- reorganized the error recovery system (initially because errpile could
       cause SEGV on Linux systems)
   14- typo. problems in doc and refcard (interletter spacing in $nfz$...)

    1- Reorganized Makefile.SH: extraction twice as fast.
    2- pari.menu and pariemacs.txt rewritten, pari.el updated.
    3- expanded the man gp.1 to mention command line switches
    4- the implied input from non-interactive input command (like extern and
       read) does not go into the GP history (%x) anymore (it never went into
       readline's). The final output (value of last expression evaluated) of
       course still does!
    5- updated chapter 5 of the User's Manual (removed obsolete information).

    1- better settings for handling the Meta key under readline in
    2- support for shared libraries under FreeBSD (Y. Uchikawa)
    3- colors under Emacs (thx for the help Gerhard!)
       1) emulate exactly the "colors" default after a M-x gp
       2) .gp files edited get a special highlighting.
    4- a flag to default() to get the result under GP.
    5- overloaded the "." (member) operator to concatenate as strings if LHS is
       a string.
    6- .gprc accepts some limited preprocessing directive (#if READL and
       #if EMACS (and #ifnot as well)). Updated lib/gprc.default to reflect the

    1- some unused, undocumented functions (allocatemem(), checksqid())
       made static some other (op_ReIm).

Done for version 2.0.2.alpha (released 15/12/1997):

    1- typos in the documentation for the random() function
    2- removed an extra -emacs flag in pari.el
    3- decodefactor was incorrectly remembered by whatnow (it's factorback now)
    4- test mode did not prevent all prompt expansion (==> bug in make test)
    5- gphelp stopped abruptly when meeting a cross-referencing macro.
    6- zetainit now aborts cleanly when disc. too big (could cause memory fault)
    7- exceedingly rare bug in the printing of real numbers (missing decimals)
    8- too early rounding in polroots which in rare cases made GP think some
       error had happened.
    9- text overflowed the manual pages (and tutorial) on non-A4 paper.
   10- polred incorrectly assumed that nf arguments were totally real (in a non
       critical part: that just led to some unnecessary computations).
   11- polred(f,2) could try to overwrite universal integer gzero 
   12- check if we are using GNU as or GNU ld in Configure.
   13- empty -R argument to $CC when building GP without graphics (==> link
   14- bnfinit acts sensibly when fundamental units are too large (before:
       "overflow in R*R")
   15- cleaned up buch2.c (removed ideallllredpart1, removed gerepile in
       class_group_generators(), not_given now called from getfu)
   16- nfgaloisconj(...,2) was unusable (tried an illegal multiplication).
   17- is_totally_split was very inefficient (==> nfgaloisconj was very slow).
   18- some unimportant typos (gexpo) in polgalois.
   19- compiling without readline gave a Warning in gp.c (already_hist).
   20- some make programs out there don't like $< (suppressed from doc/Makefile)
   21- ellap sometimes assumed (wrongly) that coeffs of the curve were integers.
   22- flag 0 and 1 in ellap had been mixed up.
   23- print an extra \n before an error message if last output did not 
       include it.
   24- component(any non recursive type) gave a SEGV.
   25- suminf / prodinf / prodeuler assumed they treated a real expression.
   26- lindep / algep had problems with numbers having a rational component.
   27- last significant digits of bessel* and hyperu were wrong (now only the
       last one is).
   28- expi now returns a long as documented (expi(gzero) returned 0 on 64-bit
   29- g++ could not compile libpari.a (casts missing, extraneous extern "C",
       faulty inline, etc.).
   30- cleaned up the enums in gp.h
   31- incorrect target veryclean in doc/Makefile

    1- '_' is now valid in GP identifiers.
    2- removed subsections from table of contents. pages in the manual are now
       numbered consecutively.
    3- gexpo now accepts exact 0 arguments (return -HIGHEXPOBIT).
       gexpo for complex numbers now return max(gexpo(Re), gexpo(Im))
    4- parts of lib/gprc.default
    5- the second argument of subgrouplist is now optional

    1- buggy label/goto functions
    2- (now unused) error messages: labeler, gexpoer2.
    3- _ as shorthand for conj()
    4- (useless, undocumented) function gnormalize
    5- some files in the lib directory (functions, gp)

    1- some files in the lib directory (README, pari.xbm, xgp)

Done for version 2.0.1.alpha (released 29/11/1997):

    1- multiple factors forgotten when factoring univariate pols over Z.
    2- extraneous modifications of the random seed (period of random generator
       was ridiculously small for some buchxxx functions). Change the bench
       results (in a non essential way).
    3- bad terminal size determination.
    4- aliases incorrectly killed (possible SEGV).
    5- incrementing/decrementing array elements with the (valid) syntax 
      v[i]++ / v[i]-- caused a weird error message.
    6- subgrouplist() could end up by a SEGV on Linux systems.
    7- on HP-UX, flag -Aa was not taken into account in Configure (caused it to
      fail on has_TIOCGWINSZ.c)
    8- added a missing #define _INCLUDE_POSIX_SOURCE in galois.c (last 2
      indepently fixed by Oliver Voigt and LG).
GN  9- the script examples/cl.gp called vecconcat() instead of concat()
GN 10- make install-sta rebuilt gp-sta unnecessarily.
GN 11- many, many typos in the tutorial.
   12- tu / fu applied incorrectly to a bnfclassunit.
   13- bnfclassunit did not output a valid object (matrix whose elements were 
       rows instead of columns).
   14- conversion bug from t_QUAD to t_REAL/t_COMPLEX
   15- off-by-1 error in the history recovery after an error.
   16- in fprintferr() (e.g. debug messages), embedded %Z did not work correctly
   17- rnfequation over Q yielded a SEGV.
   18- string() in compatibility mode corrupted the stack.
   19- it is now safe to have colours in prompt and input line under readline.
   20- default colours restored upon exiting.
   21- default colors in lib/gprc.default used 0 instead of -1 for "no color".
   22- psi and lngamma could give wrong results when the argument was not real
   23- the make test-graphic bench was missing a newline.
   24- Pol(break) gave a SEGV.
   25- x=1; Pol(1) gave a stupid error message.
IZ 26- tutorial.tex was unnecessarily rebuilt
   27- typos in ggcd (cases nobody will ever access: gcd of a non-reduced
LG     fraction with an intmod, etc.)
LG 28- incorrect handling of integrals of vectors
   29- gcd of polynomials with non-exact coeffs gave stupid results (now, they
       are just often wrong, since the mathematical notion is rather imprecise).
   30- typos in rnfkummer (incorrect flag handling)
   31- typo in idealpowprime (negative exponent gave wrong denominator)
   32- multiplication t_COMPLEX x t_COMPLEX used 4 mult. instead of 3.
   33- some modular functions (j, f, f2) rewritten to take advantage of new eta
       function (trueta). 

   1- ?? (gphelp) starts in detex mode (-d) from a console window. tmp files
      now placed according to the $TMPDIR environment variable (in /tmp by
   2- /usr/local/lib/pari/data is a better place for the Galois resolvents
      (which are not included yet in the standard distribution).
   3- The example for prompt in gprc.default to discuss escape sequences under
   4- Configure now starts by searching the toplevel directory for a temporary
      readline installation.
   5- The output of default(colors) was confusing. It is a string now.
   6- third argument of polinterpolate can be arbitrary and is now optional
      ("x" by default) (it had to be numeric).
   7- directory configure renamed config, some of the Makefiles in there as
      well (to avoid confusion).
   8- the low_stack macro to facilitate dynamic stack expansion
   9- if, back to GP main loop, the last command was a print1(), output an
      extra newline. This way the prompt is guaranteed to be anchored on 
      column 1 (suppresses a readline display bug as well).
  10- Due to 9, pari.el now supposes the prompt starts in col. 1.
  11- Better handling of version numbers (LG)
  12- decodefactor() renamed to factorback().

   1- The (unused, undocumented) Malloc_Procs functions and macros.
   2- The (now unused) error message numvarer.
   3- some (useless, undocumented) targets in the top Makefile
   4- (useless, undocumented) function polgcd()

   1- This file !
   2- new flags -ch, -cb, -cu (colour support) to gphelp (see its header).
IZ 3- OS/2 (+ enough tools...) supported by Configure
   4- file examples/Inputrc (example of .inputrc for readline).
   5- Weber f1 function implemented.
   6- Karatsuba multiplication t_REAL x t_REAL (development code, not used by
      PARI yet). Test it with install if you wish.
Karim Belabas                    e-mail: Karim.Belabas@math.u-psud.fr
Dep. de Mathematiques, Bat. 425
Universite Paris-Sud             Tel: (33 1) 01 69 15 57 48
F-91405 ORSAY                    Fax: (33 1) 01 69 15 60 19