Print this page
11210 libm should be cstyle(1ONBLD) clean

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/C/scalbn.c
          +++ new/usr/src/lib/libm/common/C/scalbn.c
↓ open down ↓ 10 lines elided ↑ open up ↑
  11   11   * and limitations under the License.
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
       21 +
  21   22  /*
  22   23   * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  23   24   */
       25 +
  24   26  /*
  25   27   * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  26   28   * Use is subject to license terms.
  27   29   */
  28   30  
  29   31  #pragma weak __scalbn = scalbn
  30   32  
  31   33  #include "libm.h"
  32   34  
  33      -static const double
  34      -        one     = 1.0,
  35      -        huge    = 1.0e300,
  36      -        tiny    = 1.0e-300,
  37      -        twom54  = 5.5511151231257827021181583404541015625e-17;
       35 +static const double one = 1.0,
       36 +        huge = 1.0e300,
       37 +        tiny = 1.0e-300,
       38 +        twom54 = 5.5511151231257827021181583404541015625e-17;
  38   39  
  39   40  #if defined(__x86)
  40   41  static const double two52 = 4503599627370496.0;
  41   42  #else
  42   43  /*
  43   44   * Normalize non-zero subnormal x and return biased exponent of x in [-51,0]
  44   45   */
  45   46  static int
  46      -ilogb_biased(unsigned *px) {
       47 +ilogb_biased(unsigned *px)
       48 +{
  47   49          int s = 52;
  48   50          unsigned v = px[HIWORD] & ~0x80000000, w = px[LOWORD], t = v;
  49   51  
  50   52          if (t)
  51   53                  s -= 32;
  52   54          else
  53   55                  t = w;
       56 +
  54   57          if (t & 0xffff0000)
  55   58                  s -= 16, t >>= 16;
       59 +
  56   60          if (t & 0xff00)
  57   61                  s -= 8, t >>= 8;
       62 +
  58   63          if (t & 0xf0)
  59   64                  s -= 4, t >>= 4;
       65 +
  60   66          t <<= 1;
  61   67          s -= (0xffffaa50 >> t) & 0x3;
       68 +
  62   69          if (s < 32) {
  63   70                  v = (v << s) | w >> (32 - s);
  64   71                  w <<= s;
  65   72          } else {
  66   73                  v = w << (s - 32);
  67   74                  w = 0;
  68   75          }
       76 +
  69   77          px[HIWORD] = (px[HIWORD] & 0x80000000) | v;
  70   78          px[LOWORD] = w;
  71   79          return (1 - s);
  72   80  }
  73      -#endif  /* defined(__x86) */
       81 +#endif /* defined(__x86) */
  74   82  
  75   83  double
  76      -scalbn(double x, int n) {
  77      -        int     *px, ix, hx, k;
       84 +scalbn(double x, int n)
       85 +{
       86 +        int *px, ix, hx, k;
  78   87  
  79   88          px = (int *)&x;
  80   89          ix = px[HIWORD];
  81   90          hx = ix & ~0x80000000;
  82   91          k = hx >> 20;
  83   92  
  84      -        if (k == 0x7ff) /* x is inf or NaN */
       93 +        if (k == 0x7ff)                 /* x is inf or NaN */
  85   94                  return (x * one);
  86   95  
  87   96          if (k == 0) {
  88   97                  if ((hx | px[LOWORD]) == 0 || n == 0)
  89   98                          return (x);
       99 +
  90  100  #if defined(__x86)
  91  101                  x *= two52;
  92  102                  ix = px[HIWORD];
  93  103                  k = ((ix & ~0x80000000) >> 20) - 52;
  94  104  #else
  95  105                  k = ilogb_biased((unsigned *)px);
  96  106                  ix = px[HIWORD];
  97  107  #endif
  98  108                  /* now k is in the range -51..0 */
  99  109                  k += n;
 100      -                if (k > n)      /* integer overflow occurred */
      110 +
      111 +                if (k > n)              /* integer overflow occurred */
 101  112                          k = -100;
 102  113          } else {
 103  114                  /* k is in the range 1..1023 */
 104  115                  k += n;
 105      -                if (k < n)      /* integer overflow occurred */
      116 +
      117 +                if (k < n)              /* integer overflow occurred */
 106  118                          k = 0x7ff;
 107  119          }
 108  120  
 109  121          if (k > 0x7fe)
 110      -                return (huge * ((ix < 0)? -huge : huge));
      122 +                return (huge * ((ix < 0) ? -huge : huge));
      123 +
 111  124          if (k < 1) {
 112  125                  if (k <= -54)
 113      -                        return (tiny * ((ix < 0)? -tiny : tiny));
      126 +                        return (tiny * ((ix < 0) ? -tiny : tiny));
      127 +
 114  128                  k += 54;
 115  129                  px[HIWORD] = (ix & ~0x7ff00000) | (k << 20);
 116  130                  return (x * twom54);
 117  131          }
      132 +
 118  133          px[HIWORD] = (ix & ~0x7ff00000) | (k << 20);
 119  134          return (x);
 120  135  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX