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 | ||||
FE_ALL_EXCEPTFE_DIVBYZEROFE_INEXACTFE_INVALIDFE_OVERFLOWFE_UNDERFLOW (C++11)(C++11)(C++11)(C++11)(C++11)(C++11) | ||||
(C++11)(C++11)(C++11)(C++11) | ||||
(C++11) |
Defined in header <cfenv> | ||
#define FE_DIVBYZERO /*implementation defined power of 2*/ | (since C++11) | |
#define FE_INEXACT /*implementation defined power of 2*/ | (since C++11) | |
#define FE_INVALID /*implementation defined power of 2*/ | (since C++11) | |
#define FE_OVERFLOW /*implementation defined power of 2*/ | (since C++11) | |
#define FE_UNDERFLOW /*implementation defined power of 2*/ | (since C++11) | |
#define FE_ALL_EXCEPT FE_DIVBYZERO | FE_INEXACT | \ FE_INVALID | FE_OVERFLOW | \ | (since C++11) | |
All these macro constants (exceptFE_ALL_EXCEPT
) expand to integer constant expressions that are distinct powers of 2, which uniquely identify all supported floating-point exceptions. Each macro is defined only if it is supported.
The macro constantFE_ALL_EXCEPT
, which expands to the bitwise OR of all otherFE_*
, is always defined and is zero if floating-point exceptions are not supported by the implementation.
Constant | Explanation |
FE_DIVBYZERO | pole error occurred in an earlier floating-point operation |
FE_INEXACT | inexact result: rounding was necessary to store the result of an earlier floating-point operation |
FE_INVALID | domain error occurred in an earlier floating-point operation |
FE_OVERFLOW | the result of the earlier floating-point operation was too large to be representable |
FE_UNDERFLOW | the result of the earlier floating-point operation was subnormal with a loss of precision |
FE_ALL_EXCEPT | bitwise OR of all supported floating-point exceptions |
The implementation may define additional macro constants in<cfenv> to identify additional floating-point exceptions. All such constants begin withFE_
followed by at least one uppercase letter.
Seemath_errhandling for further details.
#include <cfenv>#include <cmath>#include <iostream> // #pragma STDC FENV_ACCESS ON volatiledouble zero=0.0;// volatile not needed where FENV_ACCESS is supportedvolatiledouble one=1.0;// volatile not needed where FENV_ACCESS is supported int main(){std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"1.0/0.0 = "<<1.0/ zero<<'\n';if(std::fetestexcept(FE_DIVBYZERO))std::cout<<"division by zero reported\n";elsestd::cout<<"division by zero not reported\n"; std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"1.0/10 = "<< one/10<<'\n';if(std::fetestexcept(FE_INEXACT))std::cout<<"inexact result reported\n";elsestd::cout<<"inexact result not reported\n"; std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"sqrt(-1) = "<<std::sqrt(-1)<<'\n';if(std::fetestexcept(FE_INVALID))std::cout<<"invalid result reported\n";elsestd::cout<<"invalid result not reported\n";}
Possible output:
1.0/0.0 = infdivision by zero reported1.0/10 = 0.1inexact result reportedsqrt(-1) = -naninvalid result reported
(C++11)(C++11)(C++11) | defines the error handling mechanism used by the common mathematical functions (macro constant)[edit] |
C documentation forfloating point exception macros |