Floating point environment
The floating-point environment is the set of floating-point status flags and control modes supported by the implementation. It is thread-local, each thread inherits the initial state of its floating-point environment from the parent thread. Floating-point operations modify the floating-point status flags to indicate abnormal results or auxiliary information. The state of floating-point control modes affects the outcomes of some floating-point operations.
The floating-point environment access and modification is only meaningful when
#pragma STDC FENV_ACCESS is set to ON
. Otherwise the implementation is free to assume that floating-point control modes are always the default ones and that floating-point status flags are never tested or modified. In practice, few current compilers support the #pragma
explicitly, but most compilers allow meaningful access to the floating-point environment anyway.
[edit] Types
Defined in header
<fenv.h> |
|
fenv_t | The type representing the entire floating-point environment |
fexcept_t | The type representing all floating-point status flags collectively |
[edit] Functions
(C99)
|
clears the specified floating-point status flags (function) |
(C99)
|
determines which of the specified floating-point status flags are set (function) |
(C99)
|
raises the specified floating-point exceptions (function) |
(C99)(C99)
|
copies the state of the specified floating-point status flags from or to the floating-point environment (function) |
(C99)(C99)
|
gets or sets rounding direction (function) |
(C99)
|
saves or restores the current floating point environment (function) |
(C99)
|
saves the environment, clears all status flags and ignores all future errors (function) |
(C99)
|
restores the floating-point environment and raises the previously raise exceptions (function) |
[edit] Macros
floating-point exceptions (macro constant) |
|
floating-point rounding direction (macro constant) |
|
(C99)
|
default floating-point environment (macro constant) |
This section is incomplete Reason: FENV_ACCESS |