Print this page


Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/LD/scalbl.c
          +++ new/usr/src/lib/libm/common/LD/scalbl.c
↓ open down ↓ 40 lines elided ↑ open up ↑
  41   41  long double
  42   42  scalbl(long double x, long double fn) {
  43   43          int *py = (int *) &fn, n;
  44   44          long double z;
  45   45  
  46   46          if (isnanl(x) || isnanl(fn))
  47   47                  return x * fn;
  48   48  
  49   49          /* fn is +/-Inf */
  50   50  #if defined(_BIG_ENDIAN)
  51      -        if ((py[0] & 0x7fff0000) == 0x7fff0000)
       51 +        if ((py[0] & 0x7fff0000) == 0x7fff0000) {
  52   52                  if ((py[0] & 0x80000000) != 0)
  53   53  #else
  54      -        if ((py[2] & 0x7fff) == 0x7fff)
       54 +        if ((py[2] & 0x7fff) == 0x7fff) {
  55   55                  if ((py[2] & 0x8000) != 0)
  56   56  #endif
  57   57                          return x / (-fn);
  58   58                  else
  59   59                          return x * fn;
  60      -
       60 +        }
  61   61          if (rintl(fn) != fn)
  62   62                  return (fn - fn) / (fn - fn);
  63   63          if (fn > 65000.0L)
  64   64                  z = scalbnl(x, 65000);
  65   65          else if (-fn > 65000.0L)
  66   66                  z = scalbnl(x, -65000);
  67   67          else {
  68   68                  n = (int) fn;
  69   69                  z = scalbnl(x, n);
  70   70          }
  71   71          return z;
  72   72  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX