Print this page
11175 libm should use signbit() correctly
11188 c99 math macros should return strictly backward compatible values

Split Close
Expand all
Collapse all
          --- old/usr/src/head/iso/math_c99.h
          +++ new/usr/src/head/iso/math_c99.h
↓ open down ↓ 58 lines elided ↑ open up ↑
  59   59  #define INFINITY        (__builtin_inff())
  60   60  #undef  NAN
  61   61  #define NAN             (__builtin_nanf(""))
  62   62  
  63   63  /*
  64   64   * C99 7.12.3 classification macros
  65   65   */
  66   66  #undef  isnan
  67   67  #undef  isinf
  68   68  #if __GNUC__ >= 4
  69      -#define isnan(x)        __builtin_isnan(x)
  70      -#define isinf(x)        __builtin_isinf(x)
  71   69  #define fpclassify(x)   __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, \
  72   70      FP_SUBNORMAL, FP_ZERO, x)
  73      -#define isfinite(x)     __builtin_isfinite(x)
  74      -#define isnormal(x)     __builtin_isnormal(x)
  75      -#define signbit(x)      (__builtin_signbit(x) > 0)
       71 +#define isnan(x)        __builtin_isnan(x)
       72 +#define isinf(x)        __builtin_isinf(x)
       73 +#define isfinite(x)     (__builtin_isfinite(x) != 0)
       74 +#define isnormal(x)     (__builtin_isnormal(x) != 0)
       75 +#define signbit(x)      (__builtin_signbit(x) != 0)
  76   76  #else  /* __GNUC__ >= 4 */
  77   77  #define isnan(x)        __extension__( \
  78   78                          { __typeof(x) __x_n = (x); \
  79   79                          __builtin_isunordered(__x_n, __x_n); })
  80   80  #define isinf(x)        __extension__( \
  81   81                          { __typeof(x) __x_i = (x); \
  82   82                          __x_i == (__typeof(__x_i)) INFINITY || \
  83   83                          __x_i == (__typeof(__x_i)) (-INFINITY); })
  84   84  #undef  isfinite
  85   85  #define isfinite(x)     __extension__( \
↓ open down ↓ 442 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX