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/acosl.c
          +++ new/usr/src/lib/libm/common/Q/acosl.c
↓ open down ↓ 36 lines elided ↑ open up ↑
  37   37   *                            ________
  38   38   *                           / 1 - x
  39   39   *              = 2*atan (  / -------- ) for non-exceptional x.
  40   40   *                        \/   1 + x
  41   41   *
  42   42   * Special cases:
  43   43   *      if x is NaN, return x itself;
  44   44   *      if |x|>1, return NaN with invalid signal.
  45   45   */
  46   46  
  47      -#pragma weak acosl = __acosl
       47 +#pragma weak __acosl = acosl
  48   48  
  49   49  #include "libm.h"
  50   50  
  51   51  static const long double zero = 0.0L, one = 1.0L;
  52   52  
  53   53  long double
  54   54  acosl(long double x) {
  55   55          if (isnanl(x))
  56   56                  return (x + x);
  57   57          else if (fabsl(x) < one)
  58   58                  x = atanl(sqrtl((one - x) / (one + x)));
  59   59          else if (x == -one)
  60   60                  x = atan2l(one, zero);  /* x <- PI */
  61   61          else if (x == one)
  62   62                  x = zero;
  63   63          else {          /* |x| > 1  create invalid signal */
  64   64                  return (zero / zero);
  65   65          }
  66   66          return (x + x);
  67   67  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX