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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/Q/expl.c
          +++ new/usr/src/lib/libm/common/Q/expl.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  /*
  31   32   * expl(x)
  32   33   * Table driven method
  33   34   * Written by K.C. Ng, November 1988.
  34   35   * Algorithm :
↓ open down ↓ 30 lines elided ↑ open up ↑
  65   66   * Only decimal values are given. We assume that the compiler will convert
  66   67   * from decimal to binary accurately enough to produce the correct
  67   68   * hexadecimal values.
  68   69   */
  69   70  
  70   71  #pragma weak __expl = expl
  71   72  
  72   73  #include "libm.h"
  73   74  
  74   75  extern const long double _TBL_expl_hi[], _TBL_expl_lo[];
  75      -
  76      -static const long double
  77      -one             =  1.0L,
  78      -two             =  2.0L,
  79      -ln2_64          =  1.083042469624914545964425189778400898568e-2L,
  80      -ovflthreshold   =  1.135652340629414394949193107797076342845e+4L,
  81      -unflthreshold   = -1.143346274333629787883724384345262150341e+4L,
  82      -invln2_32       =  4.616624130844682903551758979206054839765e+1L,
  83      -ln2_32hi        =  2.166084939249829091928849858592451515688e-2L,
  84      -ln2_32lo        =  5.209643502595475652782654157501186731779e-27L;
       76 +static const long double one = 1.0L,
       77 +        two = 2.0L,
       78 +        ln2_64 = 1.083042469624914545964425189778400898568e-2L,
       79 +        ovflthreshold = 1.135652340629414394949193107797076342845e+4L,
       80 +        unflthreshold = -1.143346274333629787883724384345262150341e+4L,
       81 +        invln2_32 = 4.616624130844682903551758979206054839765e+1L,
       82 +        ln2_32hi = 2.166084939249829091928849858592451515688e-2L,
       83 +        ln2_32lo = 5.209643502595475652782654157501186731779e-27L;
  85   84  
  86   85  /* rational approximation coeffs for [-(ln2)/64,(ln2)/64] */
  87      -static const long double
  88      -t1 =   1.666666666666666666666666666660876387437e-1L,
  89      -t2 =  -2.777777777777777777777707812093173478756e-3L,
  90      -t3 =   6.613756613756613482074280932874221202424e-5L,
  91      -t4 =  -1.653439153392139954169609822742235851120e-6L,
  92      -t5 =   4.175314851769539751387852116610973796053e-8L;
       86 +static const long double t1 = 1.666666666666666666666666666660876387437e-1L,
       87 +        t2 = -2.777777777777777777777707812093173478756e-3L,
       88 +        t3 = 6.613756613756613482074280932874221202424e-5L,
       89 +        t4 = -1.653439153392139954169609822742235851120e-6L,
       90 +        t5 = 4.175314851769539751387852116610973796053e-8L;
  93   91  
  94   92  long double
  95      -expl(long double x) {
  96      -        int *px = (int *) &x, ix, j, k, m;
       93 +expl(long double x)
       94 +{
       95 +        int *px = (int *)&x, ix, j, k, m;
  97   96          long double t, r;
  98   97  
  99      -        ix = px[0];                             /* high word of x */
       98 +        ix = px[0];                     /* high word of x */
       99 +
 100  100          if (ix >= 0x7fff0000)
 101      -                return (x + x);                 /* NaN of +inf */
 102      -        if (((unsigned) ix) >= 0xffff0000)
 103      -                return (-one / x);              /* NaN or -inf */
      101 +                return (x + x);         /* NaN of +inf */
      102 +
      103 +        if (((unsigned)ix) >= 0xffff0000)
      104 +                return (-one / x);      /* NaN or -inf */
      105 +
 104  106          if ((ix & 0x7fffffff) < 0x3fc30000) {
 105      -                if ((int) x < 1)
      107 +                if ((int)x < 1)
 106  108                          return (one + x);       /* |x|<2^-60 */
 107  109          }
      110 +
 108  111          if (ix > 0) {
 109  112                  if (x > ovflthreshold)
 110  113                          return (scalbnl(x, 20000));
 111      -                k = (int) (invln2_32 * (x + ln2_64));
      114 +
      115 +                k = (int)(invln2_32 * (x + ln2_64));
 112  116          } else {
 113  117                  if (x < unflthreshold)
 114  118                          return (scalbnl(-x, -40000));
 115      -                k = (int) (invln2_32 * (x - ln2_64));
      119 +
      120 +                k = (int)(invln2_32 * (x - ln2_64));
 116  121          }
 117      -        j  = k&0x1f;
 118      -        m  = k>>5;
 119      -        t  = (long double) k;
 120      -        x  = (x - t * ln2_32hi) - t * ln2_32lo;
 121      -        t  = x * x;
 122      -        r  = (x - t * (t1 + t * (t2 + t * (t3 + t * (t4 + t * t5))))) - two;
 123      -        x  = _TBL_expl_hi[j] - ((_TBL_expl_hi[j] * (x + x)) / r -
 124      -                _TBL_expl_lo[j]);
      122 +
      123 +        j = k & 0x1f;
      124 +        m = k >> 5;
      125 +        t = (long double)k;
      126 +        x = (x - t * ln2_32hi) - t * ln2_32lo;
      127 +        t = x * x;
      128 +        r = (x - t * (t1 + t * (t2 + t * (t3 + t * (t4 + t * t5))))) - two;
      129 +        x = _TBL_expl_hi[j] - ((_TBL_expl_hi[j] * (x + x)) / r -
      130 +            _TBL_expl_lo[j]);
 125  131          return (scalbnl(x, m));
 126  132  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX