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, such as HP aCC, Oracle Studio, and IBM XL, support the #pragma explicitly, but most compilers allow meaningful access to the floating-point environment anyway.

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

Functions

feclearexcept
(C99)
clears the specified floating-point status flags
(function)
fetestexcept
(C99)
determines which of the specified floating-point status flags are set
(function)
feraiseexcept
(C99)
raises the specified floating-point exceptions
(function)
fegetexceptflagfesetexceptflag
(C99)(C99)
copies the state of the specified floating-point status flags from or to the floating-point environment
(function)
fegetroundfesetround
(C99)(C99)
gets or sets rounding direction
(function)
fegetenvfesetenv
(C99)
saves or restores the current floating-point environment
(function)
feholdexcept
(C99)
saves the environment, clears all status flags and ignores all future errors
(function)
feupdateenv
(C99)
restores the floating-point environment and raises the previously raise exceptions
(function)

Macros

FE_ALL_EXCEPTFE_DIVBYZEROFE_INEXACTFE_INVALIDFE_OVERFLOWFE_UNDERFLOW
(C99)
floating-point exceptions
(macro constant)
FE_DOWNWARDFE_TONEARESTFE_TOWARDZEROFE_UPWARD
(C99)
floating-point rounding direction
(macro constant)
FE_DFL_ENV
(C99)
default floating-point environment
(macro constant)

References

See also

C++ documentation for Floating-point environment

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/fenv