int feclearexcept (int excepts);
Clear floating-point exceptions
Attempts to clear the floating-point exceptions specified by excepts.
Programs calling this function shall ensure that pragma FENV_ACCESS is enabled for the call.
- Bitmask value: A combination (with bitwise OR) of any number of floating-point exception values supported by the implementation:
Certain library implementations may support additional floating-point exception values (with their corresponding macros also beginning with
|FE_DIVBYZERO||Pole error: division by zero, or some other asymptotically infinite result (from finite arguments).|
|FE_INEXACT||Inexact: the result is not exact.|
|FE_INVALID||Domain error: At least one of the arguments is a value for which the function is not defined.|
|FE_OVERFLOW||Overflow range error: The result is too large in magnitude to be represented as a value of the return type.|
|FE_UNDERFLOW||Underflow range error: The result is too small in magnitude to be represented as a value of the return type.|
|FE_ALL_EXCEPT||All exceptions (selects all of the exceptions supported by the implementation).|
Libraries may define in
only the macro values above they support (the others may not be defined).
At least all of the above macro values are defined in
(even if not supported by the implementation).
Zero, if all exceptions in excepts were successfully cleared (or if excepts was zero).
A non-zero value otherwise.
/* feclearexcept, fetestexcept example */
#include <stdio.h> /* printf */
#include <math.h> /* sqrt */
#include <fenv.h> /* feclearexcept, fetestexcept, FE_ALL_EXCEPT, FE_INVALID */
#pragma STDC FENV_ACCESS on
int main ()
if (fetestexcept(FE_INVALID)) printf ("sqrt(-1) raises FE_INVALID\n");
sqrt(-1) raises FE_INVALID
Each thread maintains a separate floating-point environment with its own state. Spawning a new thread copies the current state. [This applies to C11 and C++11 implementations]
No-throw guarantee: this function never throws exceptions.
Note that C floating-point exceptions are not C++ exceptions, and thus are not caught by
Calling this function with pragma FENV_ACCESS off causes undefined behavior.