Get or set the current exception mask
#include <fpstatus.h> int fp_exception_mask ( int new_mask, int set );
libm
Use the -l m option to qcc to link against this library.
The fp_exception_mask() function gets or sets the current exception mask, depending on the value of the set argument.
This function doesn't return a special value to indicate that an error occurred. If you want to check for errors, set errno to 0, call the function, and then check errno again. |
#include <fpstatus.h> int main(int argc, char** argv) { int ret; if ((ret = fp_exception_mask(0, -1)) < 0) printf("*** Problem retrieving exceptions \n"); printf("Exceptions Enabled: \n\t"); if (ret & _FP_EXC_INEXACT) printf("Inexact "); if (ret & _FP_EXC_DIVZERO) printf("DivZero "); if (ret & _FP_EXC_UNDERFLOW) printf("Underflow "); if (ret & _FP_EXC_OVERFLOW) printf("Overflow "); if (ret & _FP_EXC_INVALID) printf("Invalid "); printf("\n"); /* Set the exception mask to enable division by zero errors */ if ((ret = fp_exception_mask(_FP_EXC_DIVZERO, 1)) < 0) printf("*** Problem setting exceptions \n"); if ((ret = fp_exception_mask(0, -1)) < 0) printf("*** Problem retrieving exceptions \n"); printf("Exceptions Enabled: \n\t"); if (ret & _FP_EXC_INEXACT) printf("Inexact "); if (ret & _FP_EXC_DIVZERO) printf("DivZero "); if (ret & _FP_EXC_UNDERFLOW) printf("Underflow "); if (ret & _FP_EXC_OVERFLOW) printf("Overflow "); if (ret & _FP_EXC_INVALID) printf("Invalid "); printf("\n"); return(0); }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |
fp_exception_value(), fp_precision(), fp_rounding(), fp_setenv()