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