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

\declaremodule{extension}{fpectl}
  \platform{Unix, Windows}
\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}
