fetestexcept
From cppreference.com
C
Concurrency support (C11)
Floating-point environment
Functions
(C99)
fetestexcept
(C99)
(C99)
(C99)(C99)
(C99)(C99)
(C99)
(C99)
(C99)
Macro constants
(C99)
Defined in header
<fenv.h>
int fetestexcept( int excepts );
(since C99)
Determines which of the specified subset of the floating-point exceptions are currently set. The argument excepts
is a bitwise OR of the floating-point exception macros.
[edit] Parameters
excepts
-
bitmask listing the exception flags to test
[edit] Return value
Bitwise OR of the floating-point exception macros that are both included in excepts
and correspond to floating-point exceptions currently set.
[edit] Example
Run this code
#include <stdio.h> #include <math.h> #include <fenv.h> #include <float.h> #pragma STDC FENV_ACCESS ON void show_fe_exceptions(void) { printf ("current exceptions raised: "); if(fetestexcept(FE_DIVBYZERO )) printf (" FE_DIVBYZERO"); if(fetestexcept(FE_INEXACT )) printf (" FE_INEXACT"); if(fetestexcept(FE_INVALID )) printf (" FE_INVALID"); if(fetestexcept(FE_OVERFLOW )) printf (" FE_OVERFLOW"); if(fetestexcept(FE_UNDERFLOW )) printf (" FE_UNDERFLOW"); if(fetestexcept(FE_ALL_EXCEPT )==0) printf (" none"); printf ("\n"); } int main(void) { /* Show default set of exception flags. */ show_fe_exceptions(); /* Perform some computations which raise exceptions. */ printf ("1.0/0.0 = %f\n", 1.0/0.0); /* FE_DIVBYZERO */ printf ("1.0/10.0 = %f\n", 1.0/10.0); /* FE_INEXACT */ printf ("sqrt(-1) = %f\n", sqrt (-1)); /* FE_INVALID */ printf ("DBL_MAX*2.0 = %f\n", DBL_MAX *2.0); /* FE_INEXACT FE_OVERFLOW */ printf ("nextafter(DBL_MIN/pow(2.0,52),0.0) = %.1f\n", nextafter (DBL_MIN /pow (2.0,52),0.0)); /* FE_INEXACT FE_UNDERFLOW */ show_fe_exceptions(); return 0; }
Output:
current exceptions raised: none 1.0/0.0 = inf 1.0/10.0 = 0.100000 sqrt(-1) = -nan DBL_MAX*2.0 = inf nextafter(DBL_MIN/pow(2.0,52),0.0) = 0.0 current exceptions raised: FE_DIVBYZERO FE_INEXACT FE_INVALID FE_OVERFLOW FE_UNDERFLOW
[edit] References
- C11 standard (ISO/IEC 9899:2011):
- 7.6.2.5 The fetestexcept function (p: 211-212)
- C99 standard (ISO/IEC 9899:1999):
- 7.6.2.5 The fetestexcept function (p: 192-193)
[edit] See also
C++ documentation for fetestexcept