Support Questions and Answers
Click on a question to show (or hide) its answer.
REDUCE is intended for users who want to solve problems in mathematics, science and engineering at pre-university level and above, although it was originally developed for research in high energy (elementary particle) physics. But, as when using any kind of calculator or computer software, you may need to do quite a lot of work to get your problem into a form that REDUCE can solve. REDUCE (like most Computer Algebra Systems) is good at solving concrete problems (such as problems involving matrices with specified elements) and not so good as solving abstract problems (such as problems involving vector spaces of arbitrary dimension).
- Casual users wishing to solve straightforward problems can use REDUCE interactively and may want to use some of the contributed REDUCE packages that are not automatically loaded, which extend the domain of applicability of REDUCE beyond that of the core system.
- Users wishing to solve more complicated problems can use the REDUCE algebraic-mode programming language and may want to prepare REDUCE programs in files of source code to be read into REDUCE.
- Advanced users wishing to extend the domain of applicability of REDUCE may want to write programs using the REDUCE symbolic-mode programming language and compile them into new packages.
- Developers wishing to port REDUCE to other platforms or Lisp systems, incorporate REDUCE into other software, or modify REDUCE for their own purposes, and anyone interested in how REDUCE works, can access all the current source code for REDUCE and its support systems.
--nogui
option. Run-REDUCE
is a GUI for running any command-line version of
REDUCE. GNU TeXmacs provides a
GUI for PSL and CSL REDUCE via a
plugin
for running REDUCE.
GNU Emacs
provides a GUI for PSL and CSL REDUCE via
the REDUCE IDE package. The Redfront
versions of PSL and CSL REDUCE both provide the same consistent CLI
with input history and text colouring. See
How to Obtain and Run REDUCE for further
details. (There is also code in the repository for
XR,
an X Window GUI for PSL, but it is not currently distributed as a
pre-built binary and is somewhat out of date.) redcsl --nogui --help
at a command
prompt lists the start-up options (assuming redcsl
is on
your search path – see How to Obtain and
Run REDUCE). .tst
) and a corresponding log file (with
extension .rlg
) containing the output from running the
test. These files, particularly the log files, provide instructive
examples of how to use REDUCE, although they were not written as
instructional material, are somewhat cryptic and assume the reader is
familiar with the problems addressed. The
xmpl
directory in the REDUCE repository provides a convenient collection of
test and log files from many of the packages, although they may be out
of date. There are currently three REDUCE discussion fora – Open Discussion, Help, and Developers – accessible via the Discussion tab on the REDUCE project page. If you are not sure which is most appropriate, you can take a look at past discussions on each forum. You need to be logged in to SourceForge to post comments.
Note that SourceForge uses markdown syntax for input such as forum posts, which can have unexpected consequences if you think you are writing plain text! Please read the Formatting Help if you are not familiar with markdown. In particular, markdown hijacks several mathematical operators for other purposes and, for example, if you want to use * to indicate multiplication then you either need to escape it as \* or use the HTML entity code *.
Log in to the REDUCE project page at SourceForge and then click on the Get Updates button (beside the green Download button).
To control all your email subscriptions, log in to SourceForge and then look at the Me link towards the top right-hand corner of most SourceForge pages. Hover over this, click on Account Settings in the drop-down menu and then select the Subscriptions tab.
You can browse the REDUCE source code repository most easily by clicking on the Code tab on the REDUCE project page. You are most likely to be interested in the code in the directory called trunk, so click on trunk in the File column. Most directories contain a README file that is displayed at the bottom of the directory listing and gives some information about the purpose of the directory and/or how to use its contents. Most of the code relates to REDUCE itself or the Lisp systems used to implement it.
The packages
directory contains most of the main code
for REDUCE itself, which is written in RLISP and is (essentially)
independent of the underlying Lisp system. The csl
and psl
directories contain the main code for the two
Lisp systems that support the distributed versions of REDUCE.
The jlisp
, jslisp
and vsl
directories contain experimental Lisp systems based on CSL.
The doc
directory contains the main documentation for
REDUCE. The contrib
and generic
directories contain contributed code that is not (yet) incorporated
into the REDUCE distributions. The web
directory
contains the code and content for the REDUCE web site (such as this
page).
As in most computer programming languages, the
identifier log
represents the natural logarithm
function in REDUCE. It is the fundamental logarithm function in
REDUCE and works in both algebraic and numerical contexts. It is
used in the results of computations whenever any logarithms remain
unevaluated.
In science and engineering, it is common to use the
identifier log
to represent logarithms to the base 10
rather than natural logarithm, and REDUCE provides the
identifier log10
to represent logarithms to the base
10. REDUCE also provides the identifier logb
to
represent general logarithms to any base, which is specified by the
second argument to the function. The function log10
is
a special case of logb
and both simplify to the
function log
. For example, the REDUCE input
{df(log(x),x), df(log10(x),x), df(logb(x,b),x)};
evaluates to
1 1 1 {---,-----------,----------} x log(10)*x log(b)*x
In mathematics, it is common to use the identifier ln
to represent the natural logarithm, and in REDUCE this identifier is
defined to be an operator but with no algebraic properties. This
means it can be used as a function that by default always evaluates
to itself without being explicitly declared to be an operator. For
example, by default all four expressions in the list
{df(ln(x),x), int(ln(x),x), ln(1), ln(e)};
remain unevaluated and are output exactly as they were
input. However, a rule such as the following can be used to
simplify ln
to log
:
{df(ln(x),x), int(ln(x),x), ln(1), ln(e)} where ln ~x => log x; 1 {---,x*(log(x) - 1),0,1} x
A similar rule can be used to simplify log
to ln
, which might be useful for output:
ws where log ~x => ln x; 1 {---,x*(ln(x) - 1),0,1} x
Such a computation, using ln
for both input and
output, must be done in two separate steps to avoid recursive
simplification. A let
statement can be used instead of
a where
clause, but then each let
rule
must be cleared before the other rule is applied, again to avoid
recursive simplification.
The function ln
can be used in numerical contexts when
the switch rounded
is on and will evaluate exactly
as log
. In fact, ln
is an alias
for log
in symbolic mode, although not in algebraic
mode.
You can turn off typeset display of mathematical output by
turning off the switch fancy
, either by using
the Switches menu or by executing the command
off fancy;
This may provide a workaround in the unlikely event of a display glitch. In addition, if you are having problems with the window-based version, or prefer a command-line version, you can run CSL REDUCE in command-line mode by starting it using the command
redcsl --nogui
or redcsl -w
One measure is provided by a set of independent CAS integration tests by Nasser M. Abbasi. There are 367 reports covering a total of 106,812 integrals, which are listed in plain text format in appendices. You can also download an SQLite3 database containing all the test results, with instructions how to use it.