C++ <cfenv> - FE_OVERFLOW
The FE_OVERFLOW macro expands to a value of type integer constant expression that is distinct powers of 2, which uniquely identifies the floating-point exception raised on overflow range errors.
Overflow range errors occur when the result of an operation cannot be represented as a value of its return type because its magnitude is too large (either positive or negative). Operations that overflow while the default rounding mode is in effect, return a positive or a negative HUGE_VAL (or HUGE_VALF or HUGE_VALL).
Definition in the <cfenv> header file is:
#define FE_OVERFLOW /*implementation defined power of 2*/
The details about all floating-point exception macros are listed below:
Macros | Description |
---|---|
FE_DIVBYZERO | Pole error exception occurred in an earlier floating-point operation. |
FE_INEXACT | Inexact result exception occurred in an earlier floating-point operation (rounding was necessary to store the result). |
FE_INVALID | Invalid argument exception occurred (domain error occurred) in an earlier floating-point operation. |
FE_OVERFLOW | Overflow range error exception occurred in an earlier floating-point operation (result was too large to be representable). |
FE_UNDERFLOW | Underflow range error exception occurred in an earlier floating-point operation (result was subnormal with a loss of precision). |
FE_ALL_EXCEPT | Bitwise OR of all supported floating-point exceptions. |
Certain library implementations may define additional macro constants in <cfenv> to identify additional floating-point exceptions (with their corresponding macros also beginning with FE_).
See math_errhandling for more details.
Example:
The example below shows the usage of FE_OVERFLOW macro.
#include <iostream> #include <cfenv> #include <cfloat> using namespace std; int main (){ cout<<"DBL_MAX*2 = "<<(DBL_MAX*2)<<"\n"; if(fetestexcept(FE_OVERFLOW)) cout<<"Domain error is reported.\n"; else cout<<"Domain error is not reported.\n"; return 0; }
The output of the above code will be:
DBL_MAX*2 = inf Domain error is reported.
❮ C++ <cfenv> Library