TOP
Next: Demonstration
Versions Up: REDUCE
Home Page Top: REDUCE
Online Documentation
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;
-
calculations with a wide variety of special functions;
-
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 its widespread use in a particular application area,
with existing packages and templates being used to speed up problem solving.
As evidenced by more than 800 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 and gopher
and World
Wide Web servers allow 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.
-
Flexible Offerings. To support the differing needs of the user community,
REDUCE is available in a number of different configurations:
-
personal system, ready to run, available for a selection of common personal
computers, shipped without source and hence with less easy updatability
between major releases, but at lowest cost for a single user site;
-
professional system, which comes with source, and is licensed for use on
one CPU or fileserver and so can be especially attractive for laboratories
or work-groups;
-
site licenses, which extend the professional system to cover all similar
machines at a single postal address.
-
Cost. The cost of a complete REDUCE to the end-user is moderate, and does
not vary substantially from platform to platform. In addition, the personal
systems and site licenses are offered on very generous terms. 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.6) is dated 15 July 1995.
It is available for most common computing systems, in some cases in more
than one version 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 available. 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 describe the general characteristics of the available Lisps, followed
by a table of 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 two
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.
TOP
Next: Demonstration
Versions Up: REDUCE
Home Page Top: REDUCE
Online Documentation
REDUCE WWW Pages maintained
by Strotmann@RRz.Uni-Koeln.DE
at Universität zu Köln
Copyright
(C) RAND 1995. All Rights Reserved.