Print this page


Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/LD/tanl.c
          +++ new/usr/src/lib/libm/common/LD/tanl.c
↓ open down ↓ 63 lines elided ↑ open up ↑
  64   64  #include "libm.h"
  65   65  #include "libm_synonyms.h"
  66   66  #include "longdouble.h"
  67   67  
  68   68  #include <sys/isa_defs.h>
  69   69  
  70   70  long double
  71   71  tanl(long double x) {
  72   72          long double y[2], z = 0.0L;
  73   73          int n, ix;
  74      -#if defined(_LITTLE_ENDIAN)
       74 +#if defined(__i386) || defined(__amd64)
  75   75          int *px = (int *) &x;
  76   76  #endif
  77   77  
  78   78          /* trig(Inf or NaN) is NaN */
  79   79          if (!finitel(x))
  80   80                  return x - x;
  81   81  
  82   82          /* High word of x. */
  83      -#if defined(_BIG_ENDIAN)
  84      -        ix = *(int *) &x;
  85      -#else
       83 +#if defined(__i386) || defined(__amd64)
  86   84          XTOI(px, ix);
       85 +#else
       86 +        ix = *(int *) &x;
  87   87  #endif
  88   88  
  89   89          /* |x| ~< pi/4 */
  90   90          ix &= 0x7fffffff;
  91   91          if (ix <= 0x3ffe9220)
  92   92                  return __k_tanl(x, z, 0);
  93   93  
  94   94          /* argument reduction needed */
  95   95          else {
  96   96                  n = __rem_pio2l(x, y);
  97   97                  return __k_tanl(y[0], y[1], n & 1);
  98   98          }
  99   99  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX