Print this page
10881 more C99 math macros should be compiler builtins

*** 34,43 **** --- 34,54 ---- #ifdef __cplusplus extern "C" { #endif + #undef FP_ZERO + #define FP_ZERO 0 + #undef FP_SUBNORMAL + #define FP_SUBNORMAL 1 + #undef FP_NORMAL + #define FP_NORMAL 2 + #undef FP_INFINITE + #define FP_INFINITE 3 + #undef FP_NAN + #define FP_NAN 4 + #if defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 || defined(__C99FEATURES__) #if defined(__GNUC__) #undef HUGE_VAL #define HUGE_VAL (__builtin_huge_val()) #undef HUGE_VALF
*** 55,73 **** #undef isnan #undef isinf #if __GNUC__ >= 4 #define isnan(x) __builtin_isnan(x) #define isinf(x) __builtin_isinf(x) ! #else #define isnan(x) __extension__( \ { __typeof(x) __x_n = (x); \ __builtin_isunordered(__x_n, __x_n); }) #define isinf(x) __extension__( \ { __typeof(x) __x_i = (x); \ __x_i == (__typeof(__x_i)) INFINITY || \ __x_i == (__typeof(__x_i)) (-INFINITY); }) - #endif #undef isfinite #define isfinite(x) __extension__( \ { __typeof(x) __x_f = (x); \ !isnan(__x_f) && !isinf(__x_f); }) #undef isnormal --- 66,88 ---- #undef isnan #undef isinf #if __GNUC__ >= 4 #define isnan(x) __builtin_isnan(x) #define isinf(x) __builtin_isinf(x) ! #define fpclassify(x) __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, \ ! FP_SUBNORMAL, FP_ZERO, x) ! #define isfinite(x) __builtin_isfinite(x) ! #define isnormal(x) __builtin_isnormal(x) ! #define signbit(x) __builtin_signbit(x) ! #else /* __GNUC__ >= 4 */ #define isnan(x) __extension__( \ { __typeof(x) __x_n = (x); \ __builtin_isunordered(__x_n, __x_n); }) #define isinf(x) __extension__( \ { __typeof(x) __x_i = (x); \ __x_i == (__typeof(__x_i)) INFINITY || \ __x_i == (__typeof(__x_i)) (-INFINITY); }) #undef isfinite #define isfinite(x) __extension__( \ { __typeof(x) __x_f = (x); \ !isnan(__x_f) && !isinf(__x_f); }) #undef isnormal
*** 97,107 **** (sizeof (__x_s) == sizeof (float) ? \ (int)(*(unsigned *)&__x_s >> 31) : \ sizeof (__x_s) == sizeof (double) ? \ (int)(((unsigned *)&__x_s)[1] >> 31) : \ (int)(((unsigned short *)&__x_s)[4] >> 15)); }) ! #endif /* * C99 7.12.14 comparison macros */ #undef isgreater --- 112,123 ---- (sizeof (__x_s) == sizeof (float) ? \ (int)(*(unsigned *)&__x_s >> 31) : \ sizeof (__x_s) == sizeof (double) ? \ (int)(((unsigned *)&__x_s)[1] >> 31) : \ (int)(((unsigned short *)&__x_s)[4] >> 15)); }) ! #endif /* defined(_BIG_ENDIAN) */ ! #endif /* __GNUC__ >= 4 */ /* * C99 7.12.14 comparison macros */ #undef isgreater
*** 180,200 **** #elif defined(__i386) typedef long double float_t; typedef long double double_t; #endif - #undef FP_ZERO - #define FP_ZERO 0 - #undef FP_SUBNORMAL - #define FP_SUBNORMAL 1 - #undef FP_NORMAL - #define FP_NORMAL 2 - #undef FP_INFINITE - #define FP_INFINITE 3 - #undef FP_NAN - #define FP_NAN 4 - #undef FP_ILOGB0 #define FP_ILOGB0 (-2147483647) #undef FP_ILOGBNAN #define FP_ILOGBNAN 2147483647 --- 196,205 ----