Floating-point environment

From Cppreference

Jump to: navigation, search

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.

Contents

[edit] Types

Defined in header <cfenv>
fenv_t The type representing the entire floating-point environment
fexcept_t The type representing all floating-point status flags collectively

[edit] Functions

clears the specified floating-point status flags
(function)
saves the state of the specified floating-point status flags
(function)
raises the specified floating-point exceptions
(function)
restores the state of the specified floating-point status flags
(function)
determines which of the specified floating-point status flags are set
(function)
gets the current rounding direction
(function)
establishes the new rounding direction
(function)
saves the current floating point environment
(function)
saves the environment, clears all status flags and ignores all future errors
(function)
restores the floating-point environment without raising exceptions
(function)
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)
default floating-point environment
(macro constant)

[edit] Notes

The floating-point exceptions are not related to the C++ exceptions. When a floating-point operation raises a floating-point exception, the status of the floating-point environment changes, which can be tested with std::fetestexcept, but the execution of a C++ program on most implementations continues uninterrupted.

There are compiler extensions that may be used to generate C++ exceptions automatically whenever a floating-point exception is raised: