A striking characteristic of interactive systems is their ability to integrate nonnumerical tasks with numerical computation. Graphical and symbolic computing work best in an interactive environment, and one or both are combined powerfully with numerical computing in commercially available interactive systems. The trend toward increased integration of these computational components is being recognized by recent developments of the IMSL, NAG and Scientific Desk libraries (§§3.3.2, 3.3.4 and 3.3.10 above).
A particular type of interactive system with a special capability for the numerical evaluation of special functions is the computer algebra system, developed to provide symbolic processing of mathematical formulas and intended, primarily, to assist in mathematical developments. These systems contain basic mathematical information that enables them to manipulate algebraic expressions, make substitutions, differentiate and integrate functions, solve algebraic, transcendental and differential equations, manipulate power series, and the like. Some knowledge of mathematical properties of special functions is built in, and more can be added by programming extensions to the command set. Numerical approximations are to be avoided, in keeping with the primary purpose of supporting exact mathematical developments, but floating-point computation is provided as a secondary capability. This often comes with a bonus when compared to the usual programming languages which simply use the hardware computer arithmetic: the precision can be set arbitrarily.
The rationale for arbitrary precision is not entirely clear. It is clear that exact rational arithmetic is essential in computer algebra applications. Perhaps multiple-precision floating-point, being relatively easy to implement, is considered a worthwhile additional capability. Also, evaluation of symbolic expressions may require high precision because of numerical sensitivity. Whatever the reason, for occasional usage of arbitrary-precision floating-point, computer algebra systems are well worth considering.
For example, one icon is called the ``expression evaluator''. When activated by the mouse, this icon presents a window with three areas. An algebraic expression is entered into the input area in a conventional programming-language syntax (like Fortran). This expression can contain numbers, symbols representing numbers, and symbols representing built-in HiQ functions. The symbols representing numbers are assigned numerical values in the options area as constants or finite arithmetical sequences. Output icons are generated in the output area when the ``run button'' (another icon) is ``pushed'' by clicking the mouse. The output icons, when activated, display tables and graphs of the computed data.
Other tasks that can be performed by similar sequences of manipulations with icons are numerical integration, optimization, data fitting, finding roots of polynomials and nonlinear functions of one variable, and solving nonlinear systems, integral equations, and initial-value and boundary-value problems in ordinary differential equations.
Special functions included in HiQ are Airy functions; beta, gamma, log gamma, psi, incomplete beta, incomplete gamma, and complementary incomplete gamma functions; Kelvin functions; Bessel functions of integer and half-integer order; Struve and Weber parabolic cylinder functions; hypergeometric function and series; confluent hypergeometric function and series; Riemann zeta function. Although HiQ performs complex arithmetic, most if not all the special functions are evaluated for real arguments only.
Macsyma avoids numerical approximations unless floating-point numbers are introduced, either explicitly or as the result of special commands. Floating-point numbers are represented internally in machine single precision, machine double precision, or software arbitrary precision. When arbitrary precision is being used there is a precision specifier. Operand precisions are adjusted, if necessary, to the specified operational precision by truncating or extending with zero digits before arithmetic operations are performed. The precision specifier can be changed at any time.
Macsyma supports the numerical evaluation of elliptic, error, gamma, polygamma, polylogarithmic and zeta functions; Airy, Bessel and Legendre functions; complete elliptic integrals and the exponential integral; classical orthogonal polynomials. Only the gamma, polygamma and Riemann zeta functions are computable in arbitrary precision. Some of the other functions are restricted to single precision. Complex arguments are allowed for the error, gamma and Bessel functions.
Because of its emphasis on symbolic computing, Maple avoids any evaluation which would introduce an inexact result unless the user specifically requests it. Expressions are evaluated symbolically, with numbers rendered as rational fractions with arbitrarily long numerators and denominators or represented as symbols. The user can request floating-point evaluation to arbitrary precision. For mathematical functions, Maple detects certain special values and can make appropriate substitutions. Otherwise the functions are left as symbolic representations until the user explicitly requests their evaluation in floating-point format. These evaluations, if they can be done at all, are to the precision specified by the user.
As with other computer algebra systems, Mathematica uses floating-point numbers only when requested explicitly. If numbers are introduced with no more significant figures than the precision of the machine floating-point system, and if the machine underflow and overflow limits are not exceeded, then computations proceed in hardware floating-point arithmetic. On the other hand, numbers that are not machine-representable are stored in a software floating-point format. Each such number is tagged with its own precision, and computations are performed in software floating-point arithmetic. The precision of nonmachine numbers is arbitrary but the internal representation is set to the highest justifiable precision. This is determined by the number of significant figures in an input number and by the precision of the operands or arguments in arithmetic operations and function evaluations. If numbers in a hardware computation underflow or overflow, then the software arithmetic takes over automatically.