Next: Floating Point Rounding Mode, Previous: Denormalized Floats, Up: Floats [Contents][Index]
The IEEE floating point standard defines several exceptions that occur when the result of a floating point operation is unclear or undesirable. Exceptions can be ignored, in which case some default action is taken, such as returning a special value. When trapping is enabled for an exception, a error is signalled whenever that exception occurs. These are the possible floating point exceptions:
:underflow
This exception occurs when the result of an
operation is too small to be represented as a normalized float in
its format. If trapping is enabled, the
floating-point-underflow
condition is signalled.
Otherwise, the operation results in a denormalized float or zero.
:overflow
This exception occurs when the result of an
operation is too large to be represented as a float in its format.
If trapping is enabled, the floating-point-overflow
exception is signalled. Otherwise, the operation results in the
appropriate infinity.
:inexact
This exception occurs when the result of a
floating point operation is not exact, i.e. the result was rounded.
If trapping is enabled, the extensions:floating-point-inexact
condition is signalled. Otherwise, the rounded result is returned.
:invalid
This exception occurs when the result of an
operation is ill-defined, such as (/ 0.0 0.0)
. If
trapping is enabled, the extensions:floating-point-invalid
condition is signalled. Otherwise, a quiet NaN is returned.
:divide-by-zero
This exception occurs when a float is
divided by zero. If trapping is enabled, the
divide-by-zero
condition is signalled. Otherwise, the
appropriate infinity is returned.
Next: Floating Point Rounding Mode, Previous: Denormalized Floats, Up: Floats [Contents][Index]