| |||
| Home > Compiler Coding Practices > About trapping software floating-point division-by-zero errors | |||
Software floating-point division-by-zero errors can be trapped with the following intrinsic:
__ieee_status(FE_IEEE_MASK_ALL_EXCEPT, FE_IEEE_MASK_DIVBYZERO);
This traps any division-by-zero errors in code, and untraps all other exceptions, as illustrated in Example 37.
Example 37. Trapped division-by-zero error
#include <stdio.h>
#include <fenv.h>
int main(void)
{ float a, b, c;
// Trap the Invalid Operation exception and untrap all other exceptions:
__ieee_status(FE_IEEE_MASK_ALL_EXCEPT, FE_IEEE_MASK_DIVBYZERO);
c = 0;
a = b / c;
printf("b / c = %f, ", a); // trap division-by-zero error
return 0;
}
ARM® C and C++ Libraries and Floating-Point Support Reference: