#include extern void abort(void); #define C99_MATH_TESTS(nan, inf, huge, norm, zero) \ { \ if (fpclassify (nan) != FP_NAN) \ abort (); \ \ if (fpclassify (inf) != FP_INFINITE) \ abort (); \ \ if (fpclassify (huge) != FP_INFINITE) \ abort (); \ \ if (fpclassify (norm) != FP_NORMAL) \ abort (); \ \ if (fpclassify (zero) != FP_ZERO) \ abort (); \ \ \ if (!isnan (nan)) \ abort (); \ \ if (isnan (inf)) \ abort (); \ \ if (isnan (huge)) \ abort (); \ \ if (isnan (norm)) \ abort (); \ \ if (isnan (zero)) \ abort (); \ \ \ if (isinf (nan)) \ abort (); \ \ if (!isinf (inf)) \ abort (); \ \ if (!isinf (huge)) \ abort (); \ \ if (isnan (norm)) \ abort (); \ \ if (isinf (zero)) \ abort (); \ \ \ if (isfinite (nan)) \ abort (); \ \ if (isfinite (inf)) \ abort (); \ \ if (isfinite (huge)) \ abort (); \ \ if (!isfinite (norm)) \ abort (); \ \ if (!isfinite (zero)) \ abort (); \ \ \ if (isnormal (nan)) \ abort (); \ \ if (isnormal (inf)) \ abort (); \ \ if (isnormal (huge)) \ abort (); \ \ if (!isnormal (norm)) \ abort (); \ \ if (isnormal (zero)) \ abort (); \ \ \ if (signbit (norm)) \ abort (); \ \ if (!signbit (-(norm))) \ abort (); \ \ \ if (!isgreater ((inf), (norm))) \ abort (); \ \ if (!isgreaterequal ((inf), (huge))) \ abort (); \ \ if (!isless ((norm), (inf))) \ abort (); \ \ if (!islessequal ((huge), (inf))) \ abort (); \ \ if (!islessgreater ((inf), (norm))) \ abort (); \ \ if (!isunordered ((nan), (norm))) \ abort (); \ }