Nan, Infinity Etc.
Enter geometry and having to deal with the possibility of infinite slope, which have situations where division by 0 can happen and must somehow be stored.
- Code:
#define isnormal(x) \
( sizeof (x) == sizeof(float ) ? __inline_isnormalf((float)(x)) \
: sizeof (x) == sizeof(double) ? __inline_isnormald((double)(x)) \
: __inline_isnormal ((long double)(x)))
#define isfinite(x) \
( sizeof (x) == sizeof(float ) ? __inline_isfinitef((float)(x)) \
: sizeof (x) == sizeof(double) ? __inline_isfinited((double)(x)) \
: __inline_isfinite ((long double)(x)))
#define isinf(x) \
( sizeof (x) == sizeof(float ) ? __inline_isinff((float)(x)) \
: sizeof (x) == sizeof(double) ? __inline_isinfd((double)(x)) \
: __inline_isinf ((long double)(x)))
#define isnan(x) \
( sizeof (x) == sizeof(float ) ? __inline_isnanf((float)(x)) \
: sizeof (x) == sizeof(double) ? __inline_isnand((double)(x)) \
: __inline_isnan ((long double)(x)))
#define signbit(x) \
( sizeof (x) == sizeof(float ) ? __inline_signbitf((float)(x)) \
: sizeof (x) == sizeof(double) ? __inline_signbitd((double)(x)) \
: __inline_signbit((long double)(x)))
As far as I have been able to tell, these are IEEE 754 floating point standard but only for C99 (and possibly GNUC specific?)
