
		Packages for symbolic computation
		        Paul Zimmermann
		   zimmerma@margaux.inria.fr
		       INRIA Rocquencourt


Abstract. This   is a  text about symbolic   computation systems and  other 
related packages.  It describes the main purposes of each package and gives
postal addresses, phone numbers,  or Internet addresses  to get   it.  This
research was done for the book (to be soon published)

@Book{Cohen92,
  author = 	 "Henri Cohen",
  title = 	 "A course in algorithmic algebraic number theory",
  publisher =	 "Springer--Verlag",
  year = 	 1992,
  series = 	 "Graduate Texts in Mathematics"
}

Acknowledgement. The following  text is widely inspired  of the "History of
CA Systems" published  by Brian  Evans in sci.math.symbolic last September,
and by the list of "Available Programs"  made by Booker  Bense. I also want
to thank all people that answered to my questions.

Table of contents:

   I) general computer algebra systems (commercial)
   II) computer algebra systems for small machines
   III) free computer algebra systems
   IV) special purpose systems
   V) multiprecision systems and libraries
   VI) Where to obtain these packages

I) general computer algebra systems (commercial)

The oldest general-purpose symbolic algebra packages were written primarily
for physicists, and are very  slow.  On the  other   hand, they  have  been
extensively tested, are have probably  less bugs than more  recent systems.
The two main systems in this  category are Macsyma and  Reduce.  Reduce was
extended to  handle more  efficiently computations linked to polynomials by
G.   Collins and this gave  rise  to Sac-II, with a  user  interface called
ALDES. These are the packages used  in the 1970's.   A second generation of
packages was developed in the 1980's.  They are much faster.  The  two main
commercial systems  are Mathematica,  by Wolfram Research, Inc., and Maple,
by the  University of  Waterloo, Canada.  Mathematica has a  very nice user
interface, and its plotting capabilities, for example on the Macintosh, are
very nice. Maple is a little faster and simpler to use, and is developed by
an academic institution.  A third  system is  widely available, although it
is not  commercially  released, the Scratchpad  II system developed by IBM.
This is a monster (in the same sense that ADA is a monster as a programming
language).  A subset of this system has recently been commercially released
under the name Axiom.  It certainly has  the  most potential for developing
powerful  applications, but is  there  the   need for such  power (which is
usually obtained at the expense of speed) for everyday problems ?

II) computer algebra systems for small machines

Some other packages    were specially designed  for   small  machines  like
Personal Computers  (PCs).  One  of these is  Derive, which  is issued from
$\mu$-Math, and requires only half a  megabyte of main memory.  Derive even
runs on  some pocket  computers!  Another  system, the  Calculus Calculator
(CC), is a symbolic  manipulator with three-dimensional graphics and matrix
operations which also runs on PCs.  A third system, Numbers, is a shareware
calculator for number theory that runs on PCs.   It  is designed to compute
number theoretic  functions for positive integers  up to 150 decimal digits
(modular  arithmetic, primality testing,   continued  and Farey  fractions,
Fibonacci and Lucas numbers, encryption and decryption).

III) free computer algebra systems

In addition  to commercial packages,  free software  systems (which are not
complete symbolic packages) also exist. One is Ubasic, written  by Y. Kida,
which  is a math-oriented high-precision Basic  for PCs.  Its extensions to
Basic allow it to handle integers and reals of several  thousand digits, as
well as fractions, complex  numbers and polynomials in  one variable.  Many
number-theoretic functions are included in  Ubasic, including the factoring
algorithm MPQS.  Since the package is written in  assembly language, Ubasic
is very fast  (it was reviewed  in Notices of  the  AMS 38 of March  1991).
Another package, closer to a symbolic package, is Pari. This package can be
used   on Unix workstations,   Macintosh, Amiga, etc.  Its  kernel  is also
written in assembler, so it  is also very  fast.  Furthermore, it has  been
specially tailored for number-theoretic computations.

IV) special purpose systems

Apart from  those general  computer algebra systems,   some special-purpose
systems exist: Cayley, GAP, Kant.  The Cayley system is designed to support
fast  computations in  algebra   (groups, modules,  rings, poly rings  over
various  kinds of coefficient domains), number  theory and finite geometry.
It includes general machinery for classical number theory (for  example the
ECM program of A. Lenstra), finite  fields and cyclotomic fields.  The next
release   will  include a  MPQS  factoring  algorithm,    a Jacobi sum-type
primality  test, facilities  for computing in  a general  algebraic  number
field,  and  a general purpose elliptic curve   calculator.  Cayley V4 will
include (that   is   what the  developers  say)  ``just  about all   of the
algorithms  of [Cohen92]''.  GAP  (Groups, Algorithms  and  Programming) is 
specially designed  for  computations  in group theory.  It  includes  some
facilities for doing  elementary number theory,  in particular to calculate
with  arbitrary length integers and rationals,  cyclotomic fields and their
subfields, and  finite fields.  It has  functions for integer factorization
(based on elliptic curves), for  primality testing, and for some elementary
functions from number  theory and combinatorics.  Its  programming language
is Maple-like.    Kant   (Computational  Algebraic  Number  Theory)  is   a
subroutine  package for algorithms  from geometry of numbers and  algebraic
number theory.

V) multiprecision systems and libraries

In addition  to specific packages,  handling of  multiprecision  numbers or
more general  types can be easily  achieved with several languages, Lisp, C
and C++.   For Lisp,  the INRIA implementation  LeLisp (which is not public
domain) contains a package  written in  assembler to  handle large numbers,
and hence is very fast.  The GNU Calc system is an advanced desk calculator
for GNU Emacs,  written  in  Emacs Lisp.   An excellent  public  domain C++
compiler can be obtained from the Free Software Foundation, and its library
allows  to  use multiprecision numbers  or   other  types.  The  library is
however written in C++ hence is slow, so it  is strongly advised to write a
library in assembler  for  number-theoretic uses.    Another multiprecision
system  written in C is  the desk  calculator (Calc)  of Hans-J.  Boehm for
Unix  workstations.  Its particularity is  to handle ``constructive''  real
numbers,  that is  to remember  the best  known  approximation to a  number
already computed.  For PCs, Timothy C. Frenz  has developed an ``infinite'' 
precision calculator, also named Calc.  Finally,  a few free packages exist
which have been  specifically written for  handling multiprecision integers
as part of a C library in an efficient  way. In addition  to Pari mentioned
above, there  is the Bignum  package of DEC PRL which  can  be  obtained by
sending an e-mail  message  to {\tt librarian@decprl.dec.com}, and the  GNU
multiprecision package Gmp which can be obtained by anonymous ftp from {\tt
prep.ai.mit.edu}, the  standard   place where  one  can  ftp all  the   GNU
software.

VI) Where to obtain these packages

You can order Maple at the following address: Waterloo Maple  Software, 160
Columbia St.  W., Waterloo, Ontario, Canada N2L  3L3, phone (519) 747-2373, 
fax (519) 747-5284, e-mail  {\tt wmsi@daisy.waterloo.edu}.  Maple has  been
ported  to many  different machines and it is  highly probable that it  has
been ported to  the  machine that you  want.  There is  also a system named
Mathcad that  uses   some parts of Maple   for  its symbolic manipulations;
Mathcad  runs under Micro-soft  Windows and is  published by MathSoft Inc.,
201 Broadway, Cambridge, Massachussets, USA, 02139 Phone: (617) 577-1017.

You can order  Mathematica from  Wolfram  Research, Inc.  at the  following 
address: Wolfram  Research, 100 Trade Center   Drive, Champaign, IL  61820,
phone    800-441-Math,   fax   217-398-0747,  e-mail   {\tt  info@wri.com}.
Mathematica has also  been ported to quite  a number   of machines, and  in
addition you can use a friendly ``front-end'' like  the Macintosh II linked
to  a more  powerful computer  (including supercomputers) which will do the
actual computations.

Macsyma exists in two flavors : the commercial versions (Symbolics Macsyma,
ALJABR,  ParaMacs)  are  licensed  from  MIT,  the  non-commercial versions
(Vaxima,  Maxima,  and DOE-Macsyma)   officially   come  from the  American
Department of Energy (DOE). All these versions are derived from the Macsyma
developed by the Mathlab Group at MIT.

The Symbolics version runs on PC 386, Symbolics computers, VMS machines and
most Unix workstations;  the address  to  order  it is:  Symbolics  MACSYMA
Division, Symbolics,  Inc., 8 New England Executive  Park East, Burlington,
MA 01803, phone (617) 221-1250 or 1-800-MACSYMA (free), fax (617) 221-1099,
e-mail {\tt macsyma-service@symbolics.com}.

Vaxima is available from the  Energy Science and Technology Software Center
(ESTSC), P.O. Box 1020, Oak Ridge, Tennessee 37831, phone (615) 576-2606. 

Maxima is a Common Lisp version maintained by William Schelter (e-mail {\tt
wfs@math.utexas.edu}) at Texas University.  Although it is a non-commercial
version, one must  get a  license from  the  Energy Science and  Technology
Software Center (see above) to use it.   For more information, get the file
{\tt README.MAXIMA} by anonymous ftp on {\tt rascal.ics.utexas.edu}.

ParaMacs,   is available from  Leo  Harten, Paradigm Associates,  Inc.,  29
Putnam  Avenue, Suite 6, Cambridge,  MA 02139, phone  (617) 492-6079, fax 
(617) 876-8186, e-mail {\tt lph@paradigm.com}.

ALJABR is available from Fort Pond  Research,  15 Fort Pond Road, Acton, MA
01720, phone 508-263-9692,  e-mail {\tt aljabr@fpr.com}.   It runs
on Macintosh, Sun and SGI computers.

There are many distributors of Reduce, depending on the machine and version
of Lisp that is used.  The main one is  Herbert Melenk, Konrad-Zuse-Zentrum
f\"ur Informationstechnik Berlin (ZIB), Heilbronner Str.  10, D 1000 Berlin 
31,  GERMANY,   phone    30-89604-195,  fax 30-89604-125,   e-mail     {\tt
melenk@sc.zib-berlin.de}. You will get detailed informations if you send an
electronic  message with   {\tt    send info-package}  as  subject  to {\tt
reduce-netlib@rand.org}.

Axiom  on  IBM  RS   6000 is distributed   by  NAG: contact  the  Numerical
Algorithms  Group Ltd., Wilkinson House,  Jordan  Hill  Rd., Oxford, UK OX2
8DR, phone (0)-865-511245, e-mail {\tt nagttt@vax.oxford.ac.uk}. 

Derive is  available from Soft  Warehouse, Inc., 3615 Harding Avenue, Suite
505, Honolulu, Hawaii 96816, USA, phone (808) 734-5801, fax (808) 735-1105. 

You can obtain Ubasic by anonymous ftp at {\tt shape.mps.ohio-state.edu} or
{\tt  wuarchive.wustl.edu}.  Or  you  can  write  directly to  Kida at  the
following  address: Prof.  Yuji  Kida,  Department  of Mathematics,  Rikkyo 
University,  Nishi-Ikebukuro   3,   Tokyo    171,  JAPAN,    e-mail    {\tt
kida@rkmath.rikkyo.ac.jp}.

The Calculus Calculator (CC) is developed  by David Meredith, Department of
Mathematics,  San  Francisco  State University,  1600  Holloway Avenue, San
Francisco, CA 94132, phone (415) 338-2199.   Version $3$ (CC3) is published
with a $200$ page manual  by Prentice Hall,  phone (201) 767-5937.  Version
$4$ (CC4) is available by anonymous  ftp from  {\tt wuarchive.wustl.edu}.

You can order Cayley from The Secretary,  Computational Algebra Group, Pure
Mathematics, University of Sydney, NSW 2006, Australia, phone (2) 692-3338,
fax (2) 692-4534,  e-mail {\tt cayley@maths.su.oz.au}. It runs  on
Sun,  Apollo,  VAX/VMS, Convex  and various IBM machines.  

GAP is available free of charge through  ftp from Aachen: the ordinary mail
address is Lehrstuhl  D f\"ur Mathematik,   RWTH  Aachen, Templergraben 64,
D-5100 Aachen, Germany.   For technical questions, contact Martin Schoenert
(e-mail {\tt martin@math.rwth-aachen.de}), and for more  general questions,
contact        Prof.         Joachim     Neub\"user     (e-mail        {\tt 
neubueser@math.rwth-aachen.de}).

There are  two versions of  Kant:  Kant  V1 is written  in Ansi-Fortran 77,
while Kant V2 is built on the Cayley Platform and written in Ansi-C.  These
two versions are available from KANT Group: Prof.   Dr.  M.  E. Pohst / Dr.
Johannes     Graf       v.      Schmettow,    Mathematisches      Institut,
Heinrich-Heine-Universit\"at,  Universit\"atsstr. 1, D-4000 D\"usseldorf 1, 
e-mail {\tt pohst@dd0rud81.bitnet} or {\tt schmetto@dd0rud81.bitnet}.

Numbers is developed by Ivo D\"untsch, Moorlandstr. 59, W-4500 Osnabr\"uck,
phone      (541)    189-106,    fax     (541)       969-2470, e-mail   {\tt
duentsch@dosuni1.bitnet}. You can get the system by anonymous ftp from {\tt 
dione.rz.uni-osnabrueck.de}.

You  can  obtain  Gmp (as well   as all software  from  the  Free Software
Foundation)    by    anonymous ftp  on   {\tt   prep.ai.mit.edu}.

The  three  multiprecision  systems named  Calc   can all  be  obtained  by
anonymous  ftp:   the  GNU calculator  (written   and    maintained by Dave
Gillespie,   e-mail  {\tt  daveg@csvax.cs.caltech.edu},   256-80   Caltech,
Pasadena,   CA 91125) from  {\tt  csvax.cs.caltech.edu}, the  calculator of
Hans-J.  Boehm from {\tt arisia.xerox.com} and the calculator of Timothy C. 
Frenz (5361 Amalfi    Drive,   Clay, NY    13041)   from  the  site    {\tt
wuarchive.wustl.edu}.

Finally, you   can obtain  Pari  by  anonymous ftp  from  the    sites {\tt
ftp.inria.fr} and {\tt math.ucla.edu}.

\centerline{\bf Internet addresses and numbers for ftp}

\bigskip

\line{\hfil\vbox{\halign{\hfil \tt # \hfil & \hfil # \hfil & # \hfil \cr
arisia.xerox.com & 13.1.64.94 & Boehm-Calc \cr
csvax.cs.caltech.edu & 131.215.131.131 & GNU Calc \cr
dione.rz.uni-osnabrueck.de & 131.173.128.15 & Numbers \cr
math.ucla.edu & 128.97.64.16 & Pari \cr
ftp.inria.fr & 128.93.1.26 & Pari \cr
prep.ai.mit.edu & 18.71.0.38 & Gmp \cr
rascal.ics.utexas.edu & 128.83.138.20 & Maxima \cr
shape.mps.ohio-state.edu & 128.146.7.200 & Ubasic \cr
wuarchive.wustl.edu & 128.252.135.4 & Ubasic, CC4, Frenz-Calc \cr
}}\hfil}
--
Paul Zimmermann Projet Algorithmes Batiment 9 Inria 78153 Le Chesnay Cedex 


