<HTML>
<HEAD>
<TITLE>Constructive Real Calculator and Library Implementation Notes</title>
</head>
<BODY BGCOLOR="#FFFFFF">
<H1>Constructive Real Calculator and Library Implementation Notes</h1>
</body>
The calculator is based on the constructive real library consisting
mainly of <TT>com.sgi.math.CR</tt> and <TT>com.sgi.math.UnaryCRFunction</tt>.
The former provides basic arithmetic operations on constructive reals.
The latter provides some basic operations on unary functions over the
constructive reals.
<H2>General approach</h2>
The library was not designed to use the absolute best known algorithms
and to provide the best possible performance.  To do so would have
significantly complicated the code, and lengthened start-up times for
the calculator and similar applications.  Instead the goals were to:
<OL>
<LI> Rely on the standard library to the greatest possible extent.
The implementation relies heavily on <TT>java.math.BigInteger</tt>,
in spite of the fact that it may not provide asymptotically optimal
performance for all operations.
<LI> Use algorithms with asymptotically reasonable performance.
<LI> Keep the code, and especially the library code, simple.
This was done both to make it more easily understandable, and to
keep down class loading time.
<LI> Avoid heuristics.  The code accepts that there is no practical way
to avoid diverging computations.  The user interface is designed to
deal with that.  There is no attempt to try to prove that a computation
will diverge ahead of time, not even in cases in which such a proof is
trivial.
</ol>
A constructive real number <I>x</i> is represented abstractly as a function
<I>f<SUB>x</sub></i>, such that  <I>f<SUB>x</sub>(n)</i> produces a scaled
integer approximation to <I>x</i>, with an error of strictly less than
2<SUP><I>n</i></sup>.  More precisely:
<P>
|<I>f<SUB>x</sub></i>(<I>n</i>) * 2<SUP><I>n</i></sup> - x| < 2<SUP><I>n</i></sup>
<P>
Since Java does not support higher order functions, these functions
are actually represented as objects with an <TT>approximate</tt>
function.  In order to obtain reasonable performance, each object
caches the best previous approximation computed so far.
<P>
This is very similar to earlier work by Boehm, Lee, Cartwright, Riggle, and
O'Donnell.
The implementation borrows many ideas from the
<A HREF="http://reality.sgi.com/boehm/calc">calculator</a>
developed earlier by Boehm and Lee.  The major differences are the
user interface, the portability of the implementation, the emphasis
on simplicity, and the reliance on a general implementation of inverse
functions.
<P>
Several alternate and functionally equivalent representations of
constructive real numbers are possible.
Gosper and Vuillemin proposed representations based on continued
fractions.
A representation as functions
producing variable precision intervals is probably more efficient
for larger scale computation.
We chose this representation because it can be implemented compactly
layered on large integer arithmetic.
<H2>Transcendental functions</h2>
The exponential and natural logarithm functions are implemented as Taylor
series expansions.  There is also a specialized function that computes
the Taylor series expansion of atan(1/n), where n is a small integer.
This allows moderately efficient computation of pi using
<P>
pi/4 = 4*atan(1/5) - atan(1/239)
<P>
All of the remaining trigonometric functions are implemented in terms
of the cosine function, which again uses a Taylor series expansion.
<P>
The inverse trigonometric functions are implemented using a general
inverse function operation in <TT>UnaryCRFunction</tt>.  This is
more expensive than a direct implementation, since each time an approximation
to the result is computed, several evaluations of the underlying
trigonometric function are needed.  Nonetheless, it appears to be
surprisingly practical, at least for something as undemanding as a desk
calculator.
<H2>Prior work</h2>
There has been much prior research on the constructive/recursive/computable
real numbers and constructive analysis.  Relatively little of this
has been concerned with issues related to practical implementations.
<P>
Several implementation efforts examined representations based on
either infinite, lazily-evaluated decimal expansions (Schwartz),
or continued fractions (Gosper, Vuillemin).  So far, these appear
less practical than what is implemented here.
<P>
Probably the most practical approach to constructive real arithmetic
is one based on interval arithmetic.  A variant that is close to,
but not quite, constructive real arithmetic is described in
<P>
Oliver Aberth, <I>Precise Numerical Analysis</i>, Wm. C. Brown Publishers,
Dubuque, Iowa, 1988.
<P>
The issues related to using this in a higher performance implementation
of constructive real arithmetic are explored in
<P>
Lee and Boehm, "Optimizing Programs over the Constructive Reals",
<I>ACM SIGPLAN 90 Conference on Programming Language Design and
Implementation, SIGPLAN Notices 25</i>, 6, pp. 102-111.
<P>
The particular implementation strategy used n this calculator was previously
described in
<P>
Boehm, Cartwright, Riggle, and O'Donnell, "Exact Real Arithmetic:
A Case Study in Higher Order Programming", <I>Proceedings of the
1986 ACM Lisp and Functional Programming Conference</i>, pp. 162-173, 1986.
</body>
</html>
