Short: Linear algebra and number theory. Src.
Uploader: nisse@lysator.liu.se
Author: pari@ceremab.u-bordeaux.fr
Type: misc/math
About PARI (14 dec 1993)
----------
PARI is the name of a sophisticated and free math package. GP is a
calculator that offers all the features of PARI and some more. PARI
uses *infinite* precision rational numbers and *arbitrary* precision
floating point numbers.
You can use complex numbers, vectors, matrices, polynomials, rational
functions and taylor expansions. PARI also handles integers mod n,
finite fields, algebraic numbers and p-adic numbers. PARI includes
standard numerical methods and the GP calculator also includes
hi-resolution plotting.
PARI is written by four professional number theorists, C. Batut,
D. Bernardi, H. Cohen and M. Olivier. The latter two are Professors of
Mathematics.
-------
This amiga distribution contains the GP calculator compiled for
different processors, an emacs mode for running GP, partial
documentation, and all the amiga specific files I used to compile GP.
The amiga hi-resolution plotting functions are written by Jerry
Tunnell, who kindly let me use and distribute them.
If you want full source and documentation, you will have to get the
source distribution. It *should* be available where you found this
package, as file pari-1.38.3.tar.gz or something similar (*Please* keep
this archive and the source archive together. If you like GP, you will
probably want the documentation too). If you can't find the source
anywhere else, you can try to ftp to megrez.ceremab.u-bordeaux.fr,
directory pub/pari/unix. This is the main PARI site.
Files
-----
amiga/ Amiga specific files and sources.
makefile.68000 Makefiles for different amiga versions.
makefile.68020
makefile.68881
mpAmiga.s Assembler file (gcc syntax) for the 68020 versions.
Converted from mp.s with the convert68k.el program in
the elisp directory.
plotAmiga.c Hi-resolution plotting functions, written by J.B. Tunnell.
version68k.diff Source diffs to add an Amiga version string.
versionport.diff
bin/
gp.68000 GP binaries for different processors.
gp.68020
gp.68881
doc/ This directory does not contain the complete documentation,
usersch3.tex only one file that is needed by pari.el
elisp/
convert68k.el Elisp program to convert a sun3 style 68k assembler file
(read mp.s) into something that amiga gcc can understand.
pari.el An Emacs mode for the GP calculator. Desribed below and
pari.elc in the file pari.txt
pari.menu Used by pari.el.
pari.txt A description of pari-mode
examples/
EXPLAIN Description of the examples.
Makefile Note that you cannot compile the C example
Makesimple without the libpari.a library.
bench.gp
clareg.gp
lucas.gp
mattrans.c
rho.gp
squfof.gp
tutnf.gp
tutnfout
Starting PARI
-------------
First, you need to install Markus Wild's ixemul.library, if you don't
have it already. Version 39.45 is the most recent non-buggy version I
know of (39.47 seems to be unreliable). This library is available on
Aminet (for example at ftp.luth.se) and is included in the gcc
distribution.
GP (file gp.68020 or whichever version you use) takes three command line
options. The most important is '-s STACKSIZE'. This sets the initial
size of the internal PARI stack (not to be confused with the task
stack). The default value is 4 MB which may be more RAM than you have
available. Try 'gp -s 1000000' or 'gp -s 100000' if GP refuses to
start. The other two flags are '-p PRIMELIMIT' and '-b BUFFERSIZE'.
Default values are 500000 and 30000 respectively.
Talking about the task stack, I don't know exactly how large it must
be. I use a stack of 100000 bytes, and that seems to be enough. To set
the task stack, use the command 'STACK 100000' command from the shell,
not the -s option to GP.
At the pari command prompt (default '?'), \q or CTRL-\ exits GP. You
can type '?' to get some on-line help. Note that running GP inside
emacs gives you better online help.
The GP command interface is quite straight forward if you are used to
MATLAB or similar systems. Note that with GP both vectors and matrices
are typed with with square brackets '[' ']', with comma ',' separating
elements on the same row and semicolon ';' separating rows. For
example, a 2-2 matrix is typed '[1,2 ; 3,4]'.
The emacs mode.
---------------
To use this on the amiga, you must make sure that you have mounted the
FIFO: device, and that the SHELL environment variable is set to some
unix-style shell. I use the shell distributed with gcc, a port of
pdksh (file name gcc/bin/sh). The shell distributed with GNUemacs
might work too, but I haven't tried it. The emacs mode is described in
the file elisp/pari.txt. If you don't wan't to edit the pari.el file,
you should assign PARI: to the directory where you have installed
PARI.
Known bugs
----------
GP does not respond to CTRL-C when run from the shell. However, if you
send the CTRL-C signal from another shell window (with the BREAK
command) or type CTRL-C in GP's emacs buffer, GP is interrupted.
A free() call occasionally failes when using the 68000 or 68020
versions of GP. I have not had this problem with the 68881 version.
I'm tempted to blame both these problems on the ixemul.library, but
I'm not sure what happens.
For those who are curious about the differences between the three
versions gp.68000, gp.68020 and gp.68881:
* The first two are compiled with gcc -msoftfloat instead of gcc
-m68881. If a 68881 processor is present, all three version makes use
of it. The performance difference between the gp.68020 and the 68881
version should be rather small on any machine that can run both. I
included the 68881 because it seemes more reliable.
* In the 68020 and 68881 versions, some low level functions are
written in 68020 assembler, while the 68000 version is written
entirely in C and is compiled with gcc -m68000 to make sure that it
contains only 68000 instructions.
-------
Enjoy GP!
Feel free to send me comments and questions (and even bug reports).
Niels Möller
Ställdalsvägen 11
122 43 Enskede
SWEDEN
email: nisse@lysator.liu.se
For questions and bug reports not specific to the amiga version, you
can also write to the authors:
pari@ceremab.u-bordeaux.fr