FE_DFL_ENV
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Numerics library
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)
Bit manipulation (C++20)
Saturation arithmetic (C++26)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
Floating-point environment
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)
FE_DFL_ENV
(C++11)
Defined in header
<cfenv>
#define FE_DFL_ENV /*implementation defined*/
(since C++11)
The macro constant FE_DFL_ENV
expands to an expression of type const std::fenv_t *, which points to a full copy of the default floating-point environment, that is, the environment as loaded at program startup.
Additional macros that begin with FE_
followed by uppercase letters, and have the type const std::fenv_t *, may be supported by an implementation.
[edit] Example
Run this code
#include <cfenv> #include <iostream> // #pragma STDC FENV_ACCESS ON void show_env() { const int e = std::fetestexcept (FE_ALL_EXCEPT ); if (e & FE_DIVBYZERO ) std::cout << "division by zero is raised\n"; if (e & FE_INEXACT ) std::cout << "inexact is raised\n"; if (e & FE_INVALID ) std::cout << "invalid is raised\n"; if (e & FE_UNDERFLOW ) std::cout << "underflow is raised\n"; if (e & FE_OVERFLOW ) std::cout << "overflow is raised\n"; switch (std::fegetround ()) { case FE_DOWNWARD : std::cout << "rounding down\n"; break; case FE_TONEAREST : std::cout << "rounding to nearest\n"; break; case FE_TOWARDZERO : std::cout << "rounding to zero\n"; break; case FE_UPWARD : std::cout << "rounding up\n"; break; } } int main() { std::cout << "On startup:\n"; show_env(); std::feraiseexcept (FE_UNDERFLOW | FE_OVERFLOW ); std::fesetround (FE_UPWARD ); std::cout << "\nBefore restoration:\n"; show_env(); std::fesetenv (FE_DFL_ENV); std::cout << "\nAfter reset to default:\n"; show_env(); }
Output:
On startup: rounding to nearest Before restoration: underflow is raised overflow is raised rounding up After reset to default: rounding to nearest
[edit] See also
(C++11)
(function) [edit]
C documentation for FE_DFL_ENV