Common mathematical functions | |||||||||||||||||||||||||||||||
Mathematical special functions(C++17) | |||||||||||||||||||||||||||||||
Mathematical constants(C++20) | |||||||||||||||||||||||||||||||
Basic linear algebra algorithms(C++26) | |||||||||||||||||||||||||||||||
Data-parallel types (SIMD)(C++26) | |||||||||||||||||||||||||||||||
Floating-point environment(C++11) | |||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||
Numeric array (valarray ) | |||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||
Bit manipulation(C++20) | |||||||||||||||||||||||||||||||
Saturation arithmetic(C++26) | |||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
|
Functions | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11)(C++11) | ||||
(C++11)(C++11) | ||||
(C++11)(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Macro constants | ||||
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) | ||||
(C++11)(C++11)(C++11)(C++11) | ||||
(C++11) |
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 supported and is set toON
. 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, or IBM XL, support the#pragma
explicitly, but most compilers allow meaningful access to the floating-point environment anyway.
Contents |
Defined in header <cfenv> | |
fenv_t (C++11) | the type representing the entire floating-point environment (typedef)[edit] |
fexcept_t (C++11) | the type representing all floating-point status flags collectively (typedef)[edit] |
(C++11) | clears the specified floating-point status flags (function)[edit] |
(C++11) | determines which of the specified floating-point status flags are set (function)[edit] |
(C++11) | raises the specified floating-point exceptions (function)[edit] |
(C++11)(C++11) | copies the state of the specified floating-point status flags from or to the floating-point environment (function)[edit] |
(C++11)(C++11) | gets or sets rounding direction (function)[edit] |
(C++11) | saves or restores the current floating-point environment (function)[edit] |
(C++11) | saves the environment, clears all status flags and ignores all future errors (function)[edit] |
(C++11) | restores the floating-point environment and raises the previously raised exceptions (function)[edit] |
floating-point exceptions (macro constant)[edit] | |
floating-point rounding direction (macro constant)[edit] | |
(C++11) | default floating-point environment (macro constant)[edit] |
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 withstd::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:
feenableexcept()
enables trapping of the floating-point exceptions, which generates the signalSIGFPE
. If the compiler option-fnon-call-exceptions
was used, the handler for that signal may throw a user-defined C++ exception._control87()
enables trapping of the floating-point exceptions, which generates a hardware exception, which can be converted to C++ exceptions with_set_se_translator
.C documentation forFloating-point environment |