\section{\module{fpectl} ---
         Floating point exception control}

\declaremodule{extension}{fpectl}
  \platform{Unix}
\moduleauthor{Lee Busby}{busby1@llnl.gov}
\sectionauthor{Lee Busby}{busby1@llnl.gov}
\modulesynopsis{Provide control for floating point exception handling.}

Most computers carry out floating point operations\index{IEEE-754}
in conformance with the so-called IEEE-754 standard.
On any real computer,
some floating point operations produce results that cannot
be expressed as a normal floating point value.
For example, try

\begin{verbatim}
>>> import math
>>> math.exp(1000)
inf
>>> math.exp(1000) / math.exp(1000)
nan
\end{verbatim}

(The example above will work on many platforms.
DEC Alpha may be one exception.)
"Inf" is a special, non-numeric value in IEEE-754 that
stands for "infinity", and "nan" means "not a number."
Note that,
other than the non-numeric results,
nothing special happened when you asked Python
to carry out those calculations.
That is in fact the default behaviour prescribed in the IEEE-754 standard,
and if it works for you,
stop reading now.

In some circumstances,
it would be better to raise an exception and stop processing
at the point where the faulty operation was attempted.
The \module{fpectl} module
is for use in that situation.
It provides control over floating point
units from several hardware manufacturers,
allowing the user to turn on the generation
of \constant{SIGFPE} whenever any of the
IEEE-754 exceptions Division by Zero, Overflow, or
Invalid Operation occurs.
In tandem with a pair of wrapper macros that are inserted
into the C code comprising your python system,
\constant{SIGFPE} is trapped and converted into the Python
\exception{FloatingPointError} exception.

The \module{fpectl} module defines the following functions and
may raise the given exception:

\begin{funcdesc}{turnon_sigfpe}{}
Turn on the generation of \constant{SIGFPE},
and set up an appropriate signal handler.
\end{funcdesc}

\begin{funcdesc}{turnoff_sigfpe}{}
Reset default handling of floating point exceptions.
\end{funcdesc}

\begin{excdesc}{FloatingPointError}
After \function{turnon_sigfpe()} has been executed,
a floating point operation that raises one of the
IEEE-754 exceptions
Division by Zero, Overflow, or Invalid operation
will in turn raise this standard Python exception.
\end{excdesc}


\subsection{Example \label{fpectl-example}}

The following example demonstrates how to start up and test operation of
the \module{fpectl} module.

\begin{verbatim}
>>> import fpectl
>>> import fpetest
>>> fpectl.turnon_sigfpe()
>>> fpetest.test()
overflow        PASS
FloatingPointError: Overflow

div by 0        PASS
FloatingPointError: Division by zero
  [ more output from test elided ]
>>> import math
>>> math.exp(1000)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
FloatingPointError: in math_1
\end{verbatim}


\subsection{Limitations and other considerations}

Setting up a given processor to trap IEEE-754 floating point
errors currently requires custom code on a per-architecture basis.
You may have to modify \module{fpectl} to control your particular hardware.

Conversion of an IEEE-754 exception to a Python exception requires
that the wrapper macros \code{PyFPE_START_PROTECT} and
\code{PyFPE_END_PROTECT} be inserted into your code in an appropriate
fashion.  Python itself has been modified to support the
\module{fpectl} module, but many other codes of interest to numerical
analysts have not.

The \module{fpectl} module is not thread-safe.

\begin{seealso}
  \seetext{Some files in the source distribution may be interesting in
           learning more about how this module operates.
           The include file \file{Include/pyfpe.h} discusses the
           implementation of this module at some length.
           \file{Modules/fpetestmodule.c} gives several examples of
           use.
           Many additional examples can be found in
           \file{Objects/floatobject.c}.}
\end{seealso}
