Print this page
11210 libm should be cstyle(1ONBLD) clean
*** 20,29 ****
--- 20,30 ----
*/
/*
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
+
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
*** 78,89 ****
*/
#include "libm.h"
extern const long double _TBL_atanl_hi[], _TBL_atanl_lo[];
! static const long double
! one = 1.0L,
p1 = -3.333333333333333333333333333331344526118e-0001L,
p2 = 1.999999999999999999999999989931277668570e-0001L,
p3 = -1.428571428571428571428553606221309530901e-0001L,
p4 = 1.111111111111111111095219842737139747418e-0001L,
p5 = -9.090909090909090825503603835248061123323e-0002L,
--- 79,89 ----
*/
#include "libm.h"
extern const long double _TBL_atanl_hi[], _TBL_atanl_lo[];
! static const long double one = 1.0L,
p1 = -3.333333333333333333333333333331344526118e-0001L,
p2 = 1.999999999999999999999999989931277668570e-0001L,
p3 = -1.428571428571428571428553606221309530901e-0001L,
p4 = 1.111111111111111111095219842737139747418e-0001L,
p5 = -9.090909090909090825503603835248061123323e-0002L,
*** 107,119 ****
#define i0 0
#define i1 3
long double
! atanl(long double x) {
long double y, z, r, p, s;
! int *px = (int *) &x, *py = (int *) &y;
int ix, iy, sign, j;
ix = px[i0];
sign = ix & 0x80000000;
ix ^= sign;
--- 107,120 ----
#define i0 0
#define i1 3
long double
! atanl(long double x)
! {
long double y, z, r, p, s;
! int *px = (int *)&x, *py = (int *)&y;
int ix, iy, sign, j;
ix = px[i0];
sign = ix & 0x80000000;
ix ^= sign;
*** 121,167 ****
/* for |x| < 1/8 */
if (ix < 0x3ffc0000) {
if (ix < 0x3feb0000) { /* when |x| < 2**(-prec/6-2) */
if (ix < 0x3fc50000) { /* if |x| < 2**(-prec/2-2) */
s = one;
! *(3 - i0 + (int *) &s) = -1; /* s = 1-ulp */
! *(1 + (int *) &s) = -1;
! *(2 + (int *) &s) = -1;
! *(i0 + (int *) &s) -= 1;
! if ((int) (s * x) < 1)
return (x); /* raise inexact */
}
z = x * x;
! if (ix < 0x3fe20000) { /* if |x| < 2**(-prec/4-1) */
return (x + (x * z) * p1);
! } else { /* if |x| < 2**(-prec/6-2) */
return (x + (x * z) * (p1 + z * p2));
}
! }
z = x * x;
! return (x + (x * z) * (p1 + z * (p2 + z * (p3 + z * (p4 +
! z * (p5 + z * (p6 + z * (p7 + z * (p8 + z * (p9 +
! z * (p10 + z * (p11 + z * (p12 + z * p13)))))))))))));
}
/* for |x| >= 8.0 */
if (ix >= 0x40020000) {
px[i0] = ix;
if (ix < 0x40050400) { /* x < 65 */
r = one / x;
z = r * r;
/*
* poly1
*/
! y = r * (one + z * (p1 + z * (p2 + z * (p3 +
! z * (p4 + z * (p5 + z * (p6 + z * (p7 +
! z * (p8 + z * (p9 + z * (p10 + z * (p11 +
! z * (p12 + z * p13)))))))))))));
y -= pio2lo;
} else if (ix < 0x40260000) { /* x < 2**(prec/3+2) */
r = one / x;
z = r * r;
/*
* poly2
*/
y = r * (one + z * (q1 + z * (q2 + z * (q3 + z * (q4 +
z * (q5 + z * (q6 + z * q7)))))));
--- 122,174 ----
/* for |x| < 1/8 */
if (ix < 0x3ffc0000) {
if (ix < 0x3feb0000) { /* when |x| < 2**(-prec/6-2) */
if (ix < 0x3fc50000) { /* if |x| < 2**(-prec/2-2) */
s = one;
! *(3 - i0 + (int *)&s) = -1; /* s = 1-ulp */
! *(1 + (int *)&s) = -1;
! *(2 + (int *)&s) = -1;
! *(i0 + (int *)&s) -= 1;
!
! if ((int)(s * x) < 1)
return (x); /* raise inexact */
}
+
z = x * x;
!
! if (ix < 0x3fe20000) /* if |x| < 2**(-prec/4-1) */
return (x + (x * z) * p1);
! else /* if |x| < 2**(-prec/6-2) */
return (x + (x * z) * (p1 + z * p2));
}
!
z = x * x;
! return (x + (x * z) * (p1 + z * (p2 + z * (p3 + z * (p4 + z *
! (p5 + z * (p6 + z * (p7 + z * (p8 + z * (p9 + z *
! (p10 + z * (p11 + z * (p12 + z * p13)))))))))))));
}
/* for |x| >= 8.0 */
if (ix >= 0x40020000) {
px[i0] = ix;
+
if (ix < 0x40050400) { /* x < 65 */
r = one / x;
z = r * r;
+
/*
* poly1
*/
! y = r * (one + z * (p1 + z * (p2 + z * (p3 + z * (p4 +
! z * (p5 + z * (p6 + z * (p7 + z * (p8 + z * (p9 +
! z * (p10 + z * (p11 + z * (p12 + z *
! p13)))))))))))));
y -= pio2lo;
} else if (ix < 0x40260000) { /* x < 2**(prec/3+2) */
r = one / x;
z = r * r;
+
/*
* poly2
*/
y = r * (one + z * (q1 + z * (q2 + z * (q3 + z * (q4 +
z * (q5 + z * (q6 + z * q7)))))));
*** 171,180 ****
--- 178,188 ----
} else if (ix < 0x7fff0000) { /* x < inf */
y = -pio2lo;
} else { /* x is inf or NaN */
if (((ix - 0x7fff0000) | px[1] | px[2] | px[i1]) != 0)
return (x - x);
+
y = -pio2lo;
}
if (sign == 0)
return (pio2hi - y);
*** 191,206 ****
if (sign == 0)
s = (x - y) / (one + x * y);
else
s = (y - x) / (one + x * y);
z = s * s;
if (ix == iy)
p = s * (one + z * (q1 + z * (q2 + z * (q3 + z * q4))));
else
! p = s * (one + z * (q1 + z * (q2 + z * (q3 + z * (q4 +
! z * (q5 + z * (q6 + z * q7)))))));
if (sign == 0) {
r = p + _TBL_atanl_lo[j];
return (r + _TBL_atanl_hi[j]);
} else {
r = p - _TBL_atanl_lo[j];
--- 199,217 ----
if (sign == 0)
s = (x - y) / (one + x * y);
else
s = (y - x) / (one + x * y);
+
z = s * s;
+
if (ix == iy)
p = s * (one + z * (q1 + z * (q2 + z * (q3 + z * q4))));
else
! p = s * (one + z * (q1 + z * (q2 + z * (q3 + z * (q4 + z * (q5 +
! z * (q6 + z * q7)))))));
!
if (sign == 0) {
r = p + _TBL_atanl_lo[j];
return (r + _TBL_atanl_hi[j]);
} else {
r = p - _TBL_atanl_lo[j];