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;
}

Show/hideSee also

Concepts
Reference

ARM® C and C++ Libraries and Floating-Point Support Reference:

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472C
Non-ConfidentialID080411