REDUCE Information Package
Next: Demonstration Versions
REDUCE Information Package
REDUCE is an interactive program designed for general algebraic
computations of interest to mathematicians, scientists and engineers. Its
capabilities include:
- expansion and ordering of polynomials and rational functions;
- substitutions and pattern matching in a wide variety of forms;
- automatic and user controlled simplification of expressions;
- calculations with symbolic matrices;
- arbitrary precision integer and real arithmetic;
- facilities for defining new functions and extending program syntax;
- analytic differentiation and integration;
- factorization of polynomials;
- facilities for the solution of a variety of algebraic equations;
- facilities for the output of expressions in a variety of formats;
- facilities for generating optimized numerical programs from symbolic
input;
- Dirac matrix calculations of interest to high energy physicists.
It is often used as an algebraic calculator for problems that are possible
to do by hand. However, the main aim of REDUCE is to support calculations
that are not feasible by hand. Many such calculations take a significant
time to set up and can run for minutes, hours or even days on the most
powerful computers. In support of this goal, REDUCE has the following
characteristics:
- Code stability. Various versions of REDUCE have been in use for over
twenty years. There has been a steady stream of improvements and
refinements since then, with the source being subject to wide review by the
user community. REDUCE has thus evolved into a powerful system whose
critical components are highly reliable, stable and efficient.
- Wide user base. A particular algebra system is often chosen for a
given calculation because of widespread use of that system in a particular
application area, with existing packages and templates being used to speed
up problem solving. As evidenced by more than 750 reports listed in the
current bibliography, REDUCE has a large and dedicated user community
working in just about every branch of computational science and
engineering. A large number of special purpose packages are available in
support of this, with many contributed by users.
- Full source code availability. From the beginning, it has been
possible to obtain the complete REDUCE source code, including the
``kernel''. Consequently, REDUCE is a valuable educational resource and a
good foundation for experiments in the discipline of computer algebra. Many
users do in fact effectively modify the source code for their own purposes.
- Flexible updating. One advantage of making all code accessible to the
user is that it is relatively easy to incorporate patches to correct
small problems or extend the applicability of existing code to new
problem areas. An electronic mail service allows users to get such
updates and complete new packages as they become available, without
having to wait for a formal system release.
- State-of-the-art algorithms. Another advantage of an ``open''
system is that there is a shared development effort involving both
distributors and users. As a result, it is easier to keep the code
up-to-date, with the best current algorithms being used soon after their
development. At the present time, we believe REDUCE has the best
available code for solving nonlinear polynomial equations using Groebner
bases, real and complex root finding to any precision, exterior calculus
calculations and optimized numerical code generation among others. Its
simplification strategy, using a combination of efficient polynomial
manipulation and flexible pattern matching is focussed on giving users as
natural a result as possible without excessive programming.
- Algebraic focus. REDUCE aims at being part of a complete scientific
environment rather than being the complete environment itself. As a
result, users can take advantage of other state-of-the-art systems
specializing in numerical and graphical calculations, rather than depend
on just one system to provide everything. To this end, REDUCE provides
facilities for writing results in a form compatible with common
programming numerical languages (such as Fortran) or document processors
such as TeX.
- Portability. Careful design for portability means REDUCE is often
available on new or uncommon machines soon after their release. This has
led to significant user communities throughout the world. At the present
time, REDUCE is readily available on essentially all workstations and
high-end microprocessor-based machines in the market.
- Uniformity. Even though REDUCE is supported with different Lisps
on many different platforms, much attention has been paid to making all
versions perform in the same manner regardless of implementation. As a
result, users can have confidence that their calculations will not behave
differently if they move them to a different machine.
- Cost. The cost of the complete REDUCE system to the end-user is
moderate, and does not vary substantially from platform to platform. In
addition, there is a very generous site license policy in effect.
Moreover, since all systems are derived from the same source base, they
are very compatible from platform to platform (from a PC to a Cray
supercomputer). This makes it possible to have compatible versions
at home and work.
The most recent release of REDUCE (Version 3.5) is dated 15 October 1993.
It is available for most common computing systems, in some cases in several
versions for the same machine, through a variety of distributors listed in
this memo. REDUCE is based on a dialect of Lisp called Standard
Lisp, and the differences between versions are the result of different
implementations of this Lisp; in each case the source code for REDUCE
itself remains the same. The complete source code for REDUCE is
normally part of the distribution, although this may vary from distributor
to distributor. On-line versions of the manual and other support
documents and tutorials are also normally included with the distribution.
In order to help users choose the best version of REDUCE for their
purposes, we shall describe the general characteristics of the available
Lisps. Following this will be a table showing the particular versions
supported on each machine, and finally the full names and addresses of the
REDUCE distributors.
Since Standard Lisp includes a limited number of functions, it is possible
to run REDUCE on most modern Lisps, since they contain these functions as
a subset. However, the distributed versions of REDUCE are based on three
easily available Lisps, namely:
- Portable Standard Lisp (PSL).
This is currently the Lisp used most widely for running REDUCE. It
evolved from the original Standard Lisp definition, but now contains many
more facilities. It is quite efficient in its use of both space and time,
and has been optimized for algebraic computation. All PSL versions of
REDUCE are distributed with sufficient PSL support to run on the given
computing system. PSL is supported on many architectures and is an ideal
system for those wanting to run REDUCE as a standalone system. The
current principal developer of PSL is the Konrad Zuse Center, Berlin (ZIB).
- Codemist Standard Lisp (CSL). This is a Lisp system written
completely in ANSI C, which makes it very easy to port to a new machine.
Like PSL, it is a faithful implementation of Standard Lisp and has been
optimized for running REDUCE. It requires a very small memory partition
for its Lisp support. Furthermore, most of the REDUCE facilities are
supported as machine independent pseudocode, which is quite compact. In the
worst case, the performance of this system is about a factor of two slower
than PSL, though in many cases it matches PSL performance. However, the
memory use is smaller. All CSL versions are distributed with sufficient CSL
support to run on the given computing system. This is an ideal system for
those wishing to embed algebraic calculations in a C-based programming
environment. The developer of CSL is Codemist Ltd. A version with Japanese
language support is also available from Forbs Ltd.
- Common Lisp. This is a Lisp supported by many companies. For the
purposes of running REDUCE, Standard Lisp is supported in Common Lisp
by interface software which defines a Standard Lisp package. Although the
version of REDUCE listed in the table below have only been tested with
AKCL 1.619 and IBUKI Common Lisp respectively, older versions have run
with this interface software in many of the available Common Lisps.
Common Lisp implementations of REDUCE tend to run slower (often by more
than a factor of three) than PSL-based systems, and require more memory to
run. They are only recommended for those who wish to embed their algebraic
calculations in a Common Lisp environment. Users of Common Lisp versions of
REDUCE are normally required to obtain a suitable Common Lisp in addition
to REDUCE.
Next: Demonstration Versions
Strotmann@RRz.Uni-Koeln.DE
see also: REDUCE Home Page
Copyright (c) 1994, RAND. All Rights Reserved.