Return the current exception mask
#include <fpstatus.h>
int fp_exception_mask ( int new_mask,
int set );
libm
The fp_exception_mask() function returns the current exception mask if set < 0. If set = 1, it enables the exception mask defined by new_mask, and if set = 0, it disables the exception mask defined by new_mask.
| If | Then |
|---|---|
| set | Enable interrupts defined by new_mask. |
| !set | Disable interrupts defined by new_mask. |
#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()