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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/Q/atan2l.c
          +++ new/usr/src/lib/libm/common/Q/atan2l.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   * atan2l(y,x)
  32   33   *
  33   34   * Method :
  34   35   *      1. Reduce y to positive by atan2(y,x)=-atan2(-y,x).
↓ open down ↓ 19 lines elided ↑ open up ↑
  54   55   * The decimal values may be used, provided that the compiler will convert
  55   56   * from decimal to binary accurately enough to produce the hexadecimal values
  56   57   * shown.
  57   58   */
  58   59  
  59   60  #pragma weak __atan2l = atan2l
  60   61  
  61   62  #include "libm.h"
  62   63  #include "longdouble.h"
  63   64  
  64      -static const long double
  65      -        zero    =  0.0L,
  66      -        tiny    =  1.0e-40L,
  67      -        one     =  1.0L,
  68      -        half    =  0.5L,
  69      -        PI3o4   =  2.356194490192344928846982537459627163148L,
  70      -        PIo4    =  0.785398163397448309615660845819875721049L,
  71      -        PIo2    =  1.570796326794896619231321691639751442099L,
  72      -        PI      =  3.141592653589793238462643383279502884197L,
  73      -        PI_lo   =  8.671810130123781024797044026043351968762e-35L;
       65 +static const long double zero = 0.0L,
       66 +        tiny = 1.0e-40L,
       67 +        one = 1.0L,
       68 +        half = 0.5L,
       69 +        PI3o4 = 2.356194490192344928846982537459627163148L,
       70 +        PIo4 = 0.785398163397448309615660845819875721049L,
       71 +        PIo2 = 1.570796326794896619231321691639751442099L,
       72 +        PI = 3.141592653589793238462643383279502884197L,
       73 +        PI_lo = 8.671810130123781024797044026043351968762e-35L;
  74   74  
  75   75  long double
  76   76  atan2l(long double y, long double x)
  77   77  {
  78   78          long double t, z;
  79   79          int k, m, signy, signx;
  80   80  
  81   81          if (x != x || y != y)
  82      -                return (x + y); /* return NaN if x or y is NAN */
       82 +                return (x + y);         /* return NaN if x or y is NAN */
       83 +
  83   84          signy = signbitl(y);
  84   85          signx = signbitl(x);
       86 +
  85   87          if (x == one)
  86   88                  return (atanl(y));
       89 +
  87   90          /* Ensure sign indicators are boolean */
  88   91          m = (signy != 0) + (signx != 0) + (signx != 0);
  89   92  
  90   93          /* when y = 0 */
  91      -        if (y == zero)
       94 +        if (y == zero) {
  92   95                  switch (m) {
  93   96                  case 0:
  94      -                        return (y);     /* atan(+0,+anything) */
       97 +                        return (y);             /* atan(+0,+anything) */
  95   98                  case 1:
  96      -                        return (y);     /* atan(-0,+anything) */
       99 +                        return (y);             /* atan(-0,+anything) */
  97  100                  case 2:
  98  101                          return (PI + tiny);     /* atan(+0,-anything) */
  99  102                  case 3:
 100  103                          return (-PI - tiny);    /* atan(-0,-anything) */
 101  104                  }
      105 +        }
 102  106  
 103  107          /* when x = 0 */
 104  108          if (x == zero)
 105  109                  return (signy != 0 ? -PIo2 - tiny : PIo2 + tiny);
 106  110  
 107  111          /* when x is INF */
 108  112          if (!finitel(x)) {
 109  113                  if (!finitel(y)) {
 110  114                          switch (m) {
 111  115                          case 0:
↓ open down ↓ 1 lines elided ↑ open up ↑
 113  117                          case 1:
 114  118                                  return (-PIo4 - tiny);  /* atan(-INF,+INF) */
 115  119                          case 2:
 116  120                                  return (PI3o4 + tiny);  /* atan(+INF,-INF) */
 117  121                          case 3:
 118  122                                  return (-PI3o4 - tiny); /* atan(-INF,-INF) */
 119  123                          }
 120  124                  } else {
 121  125                          switch (m) {
 122  126                          case 0:
 123      -                                return (zero);  /* atan(+...,+INF) */
      127 +                                return (zero);          /* atan(+...,+INF) */
 124  128                          case 1:
 125      -                                return (-zero); /* atan(-...,+INF) */
      129 +                                return (-zero);         /* atan(-...,+INF) */
 126  130                          case 2:
 127  131                                  return (PI + tiny);     /* atan(+...,-INF) */
 128  132                          case 3:
 129  133                                  return (-PI - tiny);    /* atan(-...,-INF) */
 130  134                          }
 131  135                  }
 132  136          }
      137 +
 133  138          /* when y is INF */
 134  139          if (!finitel(y))
 135  140                  return (signy != 0 ? -PIo2 - tiny : PIo2 + tiny);
 136  141  
 137  142          /* compute y/x */
 138  143          x = fabsl(x);
 139  144          y = fabsl(y);
 140  145          t = PI_lo;
 141  146          k = (ilogbl(y) - ilogbl(x));
 142  147  
 143  148          if (k > 120)
 144  149                  z = PIo2 + half * t;
 145  150          else if (m > 1 && k < -120)
 146  151                  z = zero;
 147  152          else
 148  153                  z = atanl(y / x);
 149  154  
 150  155          switch (m) {
 151  156          case 0:
 152      -                return (z);     /* atan(+,+) */
      157 +                return (z);             /* atan(+,+) */
 153  158          case 1:
 154      -                return (-z);    /* atan(-,+) */
      159 +                return (-z);            /* atan(-,+) */
 155  160          case 2:
 156  161                  return (PI - (z - t));  /* atan(+,-) */
 157  162          case 3:
 158  163                  return ((z - t) - PI);  /* atan(-,-) */
 159  164          }
      165 +
 160  166          /* NOTREACHED */
 161  167          return (0.0L);
 162  168  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX