Print this page
5261 libm should stop using synonyms.h
5298 fabs is 0-sized, confuses dis(1) and others
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Approved by: Gordon Ross <gwr@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/Q/tanl.c
          +++ new/usr/src/lib/libm/common/Q/tanl.c
↓ open down ↓ 50 lines elided ↑ open up ↑
  51   51   *
  52   52   * Special cases:
  53   53   *      Let trig be any of sin, cos, or tan.
  54   54   *      trig(+-INF)  is NaN, with signals;
  55   55   *      trig(NaN)    is that NaN;
  56   56   *
  57   57   * Accuracy:
  58   58   *      computer TRIG(x) returns trig(x) nearly rounded.
  59   59   */
  60   60  
  61      -#pragma weak tanl = __tanl
       61 +#pragma weak __tanl = tanl
  62   62  
  63   63  #include "libm.h"
  64   64  #include "longdouble.h"
  65   65  
  66   66  long double
  67   67  tanl(long double x) {
  68   68          long double y[2], z = 0.0L;
  69   69          int n, ix;
  70   70  
  71   71          ix = *(int *) &x;               /* High word of x */
  72   72          ix &= 0x7fffffff;
  73   73          if (ix <= 0x3ffe9220)           /* |x| ~< pi/4 */
  74   74                  return (__k_tanl(x, z, 0));
  75   75          else if (ix >= 0x7fff0000)      /* trig(Inf or NaN) is NaN */
  76   76                  return (x - x);
  77   77          else {                          /* argument reduction needed */
  78   78                  n = __rem_pio2l(x, y);
  79   79                  return (__k_tanl(y[0], y[1], (n & 1)));
  80   80          }
  81   81  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX