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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/LD/sinpil.c
          +++ new/usr/src/lib/libm/common/LD/sinpil.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      -/* long double sinpil(long double x),
       31 +/* BEGIN CSTYLED */
       32 +/*
       33 + * long double sinpil(long double x),
  31   34   * return long double precision sinl(pi*x).
  32   35   *
  33   36   * Algorithm, 10/17/2002, K.C. Ng
  34   37   * ------------------------------
  35   38   * Let y = |4x|, z = floor(y), and n = (int)(z mod 8.0) (displayed in binary).
  36   39   *      1. If y == z, then x is a multiple of pi/4. Return the following values:
  37   40   *             ---------------------------------------------------
  38   41   *               n  x mod 2    sin(x*pi)    cos(x*pi)   tan(x*pi)
  39   42   *             ---------------------------------------------------
  40   43   *              000  0.00       +0 ___       +1 ___      +0
↓ open down ↓ 18 lines elided ↑ open up ↑
  59   62   *              110  (y-z)/4    -cospi(t)     sinpi(t)   -1/tanpi(t)
  60   63   *              111  (z+1-y)/4  -sinpi(t)     cospi(t)   -tanpi(t)
  61   64   *             ---------------------------------------------------
  62   65   *
  63   66   * NOTE. This program compute sinpi/cospi(t<0.25) by __k_sin/cos(pi*t, 0.0).
  64   67   * This will return a result with error slightly more than one ulp (but less
  65   68   * than 2 ulp). If one wants accurate result,  one may break up pi*t in
  66   69   * high (tpi_h) and low (tpi_l) parts and call __k_sin/cos(tip_h, tip_lo)
  67   70   * instead.
  68   71   */
       72 +/* END CSTYLED */
  69   73  
  70   74  #include "libm.h"
  71   75  #include "longdouble.h"
  72   76  
  73   77  #include <sys/isa_defs.h>
  74   78  
  75      -#define I(q, m) ((int *) &(q))[m]
  76      -#define U(q, m) ((unsigned *) &(q))[m]
       79 +#define I(q, m)                         ((int *)&(q))[m]
       80 +#define U(q, m)                         ((unsigned *)&(q))[m]
  77   81  #if defined(__i386) || defined(__amd64)
  78      -#define LDBL_MOST_SIGNIF_I(ld)  ((I(ld, 2) << 16) | (0xffff & (I(ld, 1) >> 15)))
  79      -#define LDBL_LEAST_SIGNIF_U(ld) U(ld, 0)
  80      -#define PREC    64
  81      -#define PRECM1  63
  82      -#define PRECM2  62
       82 +#define LDBL_MOST_SIGNIF_I(ld)          ((I(ld, 2) << 16) | (0xffff & (I(ld, \
       83 +        1) >> 15)))
       84 +#define LDBL_LEAST_SIGNIF_U(ld)         U(ld, 0)
       85 +#define PREC                            64
       86 +#define PRECM1                          63
       87 +#define PRECM2                          62
       88 +
  83   89  static const long double twoPRECM2 = 9.223372036854775808000000000000000e+18L;
  84   90  #else
  85      -#define LDBL_MOST_SIGNIF_I(ld)  I(ld, 0)
  86      -#define LDBL_LEAST_SIGNIF_U(ld) U(ld, sizeof(long double) / sizeof(int) - 1)
  87      -#define PREC    113
  88      -#define PRECM1  112
  89      -#define PRECM2  111
       91 +#define LDBL_MOST_SIGNIF_I(ld)          I(ld, 0)
       92 +#define LDBL_LEAST_SIGNIF_U(ld)         U(ld, sizeof (long double) / \
       93 +        sizeof (int) - 1)
       94 +#define PREC                            113
       95 +#define PRECM1                          112
       96 +#define PRECM2                          111
       97 +
  90   98  static const long double twoPRECM2 = 5.192296858534827628530496329220096e+33L;
  91   99  #endif
  92  100  
  93      -static const long double
  94      -zero    = 0.0L,
  95      -quater  = 0.25L,
  96      -one     = 1.0L,
  97      -pi      = 3.141592653589793238462643383279502884197e+0000L,
  98      -sqrth   = 0.707106781186547524400844362104849039284835937688474,
  99      -tiny    = 1.0e-100;
      101 +static const long double zero = 0.0L,
      102 +        quater = 0.25L,
      103 +        one = 1.0L,
      104 +        pi = 3.141592653589793238462643383279502884197e+0000L,
      105 +        sqrth = 0.707106781186547524400844362104849039284835937688474,
      106 +        tiny = 1.0e-100;
 100  107  
 101  108  long double
 102      -sinpil(long double x) {
      109 +sinpil(long double x)
      110 +{
 103  111          long double y, z, t;
 104  112          int hx, n, k;
 105  113          unsigned lx;
 106  114  
 107  115          hx = LDBL_MOST_SIGNIF_I(x);
 108  116          lx = LDBL_LEAST_SIGNIF_U(x);
 109  117          k = ((hx & 0x7fff0000) >> 16) - 0x3fff;
      118 +
 110  119          if (k >= PRECM2) {              /* |x| >= 2**(Prec-2) */
 111      -                if (k >= 16384)
      120 +                if (k >= 16384) {
 112  121                          y = x - x;
 113      -                else {
 114      -                        if (k >= PREC)
      122 +                } else {
      123 +                        if (k >= PREC) {
 115  124                                  y = zero;
 116      -                        else if (k == PRECM1)
 117      -                                y = (lx & 1) == 0 ? zero: -zero;
 118      -                        else {  /* k = Prec - 2 */
      125 +                        } else if (k == PRECM1) {
      126 +                                y = (lx & 1) == 0 ? zero : -zero;
      127 +                        } else { /* k = Prec - 2 */
 119  128                                  y = (lx & 1) == 0 ? zero : one;
      129 +
 120  130                                  if ((lx & 2) != 0)
 121  131                                          y = -y;
 122  132                          }
 123  133                  }
 124      -        }
 125      -        else if (k < -2)        /* |x| < 0.25 */
      134 +        } else if (k < -2) {            /* |x| < 0.25 */
 126  135                  y = __k_sinl(pi * fabsl(x), zero);
 127      -        else {
      136 +        } else {
 128  137                  /* y = |4x|, z = floor(y), and n = (int)(z mod 8.0) */
 129  138                  y = 4.0L * fabsl(x);
      139 +
 130  140                  if (k < PRECM2) {
 131  141                          z = y + twoPRECM2;
 132  142                          n = LDBL_LEAST_SIGNIF_U(z) & 7; /* 3 LSb of z */
 133  143                          t = z - twoPRECM2;
 134  144                          k = 0;
 135      -                        if (t == y)
      145 +
      146 +                        if (t == y) {
 136  147                                  k = 1;
 137      -                        else if (t > y) {
      148 +                        } else if (t > y) {
 138  149                                  n -= 1;
 139  150                                  t = quater + (y - t) * quater;
 140      -                        }
 141      -                        else
      151 +                        } else {
 142  152                                  t = (y - t) * quater;
 143      -                }
 144      -                else {  /* k = Prec-3 */
      153 +                        }
      154 +                } else { /* k = Prec-3 */
 145  155                          n = LDBL_LEAST_SIGNIF_U(y) & 7; /* 3 LSb of z */
 146  156                          k = 1;
 147  157                  }
 148      -                if (k) {        /* x = N/4 */
      158 +
      159 +                if (k) {                /* x = N/4 */
 149  160                          if ((n & 1) != 0)
 150  161                                  y = sqrth + tiny;
 151  162                          else
 152  163                                  y = (n & 2) == 0 ? zero : one;
      164 +
 153  165                          if ((n & 4) != 0)
 154  166                                  y = -y;
 155      -                }
 156      -                else {
      167 +                } else {
 157  168                          if ((n & 1) != 0)
 158  169                                  t = quater - t;
      170 +
 159  171                          if (((n + (n & 1)) & 2) == 0)
 160  172                                  y = __k_sinl(pi * t, zero);
 161  173                          else
 162  174                                  y = __k_cosl(pi * t, zero);
      175 +
 163  176                          if ((n & 4) != 0)
 164  177                                  y = -y;
 165  178                  }
 166  179          }
 167      -        return hx >= 0 ? y : -y;
      180 +
      181 +        return (hx >= 0 ? y : -y);
 168  182  }
      183 +
 169  184  #undef U
 170  185  #undef LDBL_LEAST_SIGNIF_U
 171  186  #undef I
 172  187  #undef LDBL_MOST_SIGNIF_I
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX