
                         A REDUCE Limits Package

                            Stanley L. Kameny
                    E-mail: stan%valley.uucp@rand.org


LIMITS is a fast limit package for REDUCE for functions which are
continuous except for computable poles and singularities, based on some
earlier work by Ian Cohen and John P. Fitch.  The Truncated Power Series
package is used for non-critical points, at which the value of the
function is the constant term in the expansion around that point.
L'Hopital's rule is used in critical cases, with preprocessing of
<infinity - infinity> forms and reformatting of product forms in order to
be able to apply l'Hopital's rule.  A limited amount of bounded arithmetic
is also employed where applicable.


Normal entry points:

     LIMIT(EXPRN:algebraic, VAR:kernel, LIMPOINT:algebraic): algebraic

This is the standard way of calling limit, applying all of the methods.


Direction-dependent limits:

     LIMIT!+(EXPRN:algebraic, VAR:kernel, LIMPOINT:algebraic): algebraic

     LIMIT!-(EXPRN:algebraic, VAR:kernel, LIMPOINT:algebraic): algebraic


If the limit depends upon the direction of approach to the LIMPOINT, the
functions LIMIT!+ and LIMIT!- may be used.  They are defined by:

     LIMIT!+ (LIMIT!-) (EXP,VAR,LIMPOINT) ->
        LIMIT(EXP*,eps,0) EXP*=sub(VAR=VAR+(-)eps^2,EXP)


Calling functions provided mainly for diagnostic purposes:

     LIMIT0(EXPRN:algebraic, VAR:kernel, LIMPOINT:algebraic): algebraic

This function will use all parts of the limits package, but it does not
combine log terms before taking limits, so it may fail if there is a sum
of log terms which have a removable singularity in some of the terms.


     LIMIT1(EXPRN:algebraic, VAR:kernel, LIMPOINT:algebraic): algebraic

This function uses the TPS branch only, and will fail if the limpoint is
singular.


     LIMIT2(TOP:algebraic, BOT:algebraic, VAR:kernel, LIMPOINT:algebraic):
            algebraic

This function applies L'Hopital's rule to the quotient (TOP/BOT).
