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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/Q/scalbnl.c
          +++ new/usr/src/lib/libm/common/Q/scalbnl.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  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   23   * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  24   24   */
       25 +
  25   26  /*
  26   27   * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  27   28   * Use is subject to license terms.
  28   29   */
  29   30  
  30   31  #pragma weak __scalbnl = scalbnl
  31   32  
  32   33  #include "libm.h"
  33      -#include <float.h>              /* LDBL_MAX, LDBL_MIN */
  34      -#include <stdlib.h>             /* abs */
       34 +#include <float.h>                      /* LDBL_MAX, LDBL_MIN */
       35 +#include <stdlib.h>                     /* abs */
  35   36  
  36   37  #if defined(__sparc)
  37      -#define XSET_EXP(k, x)  ((int *) &x)[0] = (((int *) &x)[0] & ~0x7fff0000) | \
  38      -                                (k << 16)
  39      -#define ISINFNANL(k, x) (k == 0x7fff)
  40      -#define XTWOT_OFFSET    113
  41      -static const long double xtwot = 10384593717069655257060992658440192.0L,
  42      -                                                                /* 2^113 */
  43      -        twomtm1 = 4.814824860968089632639944856462318296E-35L;  /* 2^-114 */
       38 +#define XSET_EXP(k, x)          ((int *)&x)[0] = (((int *)&x)[0] & \
       39 +            ~0x7fff0000) | (k << 16)
       40 +#define ISINFNANL(k, x)         (k == 0x7fff)
       41 +#define XTWOT_OFFSET            113
       42 +
       43 +/* 2^113 */
       44 +static const long double xtwot = 10384593717069655257060992658440192.0L;
       45 +/* 2^-114 */
       46 +static const long double twomtm1 = 4.814824860968089632639944856462318296E-35L;
  44   47  #elif defined(__x86)
  45      -#define XSET_EXP(k, x)  ((int *) &x)[2] = (((int *) &x)[2] & ~0x7fff) | k
       48 +#define XSET_EXP(k, x)          ((int *)&x)[2] = (((int *)&x)[2] & ~0x7fff) | k
  46   49  #if defined(HANDLE_UNSUPPORTED)
  47      -#define ISINFNANL(k, x) (k == 0x7fff || k != 0 && \
  48      -                                (((int *) &x)[1] & 0x80000000) == 0)
       50 +#define ISINFNANL(k, x)         (k == 0x7fff || k != 0 && (((int *)&x)[1] & \
       51 +        0x80000000) == 0)
  49   52  #else
  50      -#define ISINFNANL(k, x) (k == 0x7fff)
       53 +#define ISINFNANL(k, x)         (k == 0x7fff)
  51   54  #endif
  52      -#define XTWOT_OFFSET    64
       55 +#define XTWOT_OFFSET            64
       56 +
  53   57  static const long double xtwot = 18446744073709551616.0L,       /* 2^64 */
  54   58          twomtm1 = 2.7105054312137610850186E-20L;                /* 2^-65 */
  55   59  #endif
  56   60  
  57   61  long double
  58      -scalbnl(long double x, int n) {
       62 +scalbnl(long double x, int n)
       63 +{
  59   64          int k = XBIASED_EXP(x);
  60   65  
  61   66          if (ISINFNANL(k, x))
  62   67                  return (x + x);
       68 +
  63   69          if (ISZEROL(x) || n == 0)
  64   70                  return (x);
       71 +
  65   72          if (k == 0) {
  66   73                  x *= xtwot;
  67   74                  k = XBIASED_EXP(x) - XTWOT_OFFSET;
  68   75          }
  69      -        if ((unsigned) abs(n) >= 131072)        /* cast to unsigned for -2^31 */
       76 +
       77 +        if ((unsigned)abs(n) >= 131072) /* cast to unsigned for -2^31 */
  70   78                  n >>= 1;                /* avoid subsequent integer overflow */
       79 +
  71   80          k += n;
       81 +
  72   82          if (k > 0x7ffe)
  73   83                  return (LDBL_MAX * copysignl(LDBL_MAX, x));
       84 +
  74   85          if (k <= -XTWOT_OFFSET - 1)
  75   86                  return (LDBL_MIN * copysignl(LDBL_MIN, x));
       87 +
  76   88          if (k > 0) {
  77   89                  XSET_EXP(k, x);
  78   90                  return (x);
  79   91          }
       92 +
  80   93          k += XTWOT_OFFSET + 1;
  81   94          XSET_EXP(k, x);
  82   95          return (x * twomtm1);
  83   96  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX