X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Facosl.c;h=83857d49b44f0bd68e44f5d69e0790cb81576a29;hb=ab1772c597ba8fe0c26400256b12d7a4df23880e;hp=510e16f10db89fa4c723cec51af045014923764d;hpb=9e2a895aaaa4a3985e94ae4f3e24c1af65f9bb34;p=musl diff --git a/src/math/acosl.c b/src/math/acosl.c index 510e16f1..83857d49 100644 --- a/src/math/acosl.c +++ b/src/math/acosl.c @@ -23,22 +23,7 @@ long double acosl(long double x) } #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 #include "__invtrigl.h" - -static const long double -one = 1.00000000000000000000e+00; - -// FIXME -//#ifdef __i386__ -/* XXX Work around the fact that gcc truncates long double constants on i386 */ -static const volatile double -pi1 = 3.14159265358979311600e+00, /* 0x1.921fb54442d18p+1 */ -pi2 = 1.22514845490862001043e-16; /* 0x1.1a80000000000p-53 */ -#define pi ((long double)pi1 + pi2) -//#else -#if 0 -static const long double -pi = 3.14159265358979323846264338327950280e+00L; -#endif +#define ACOS_CONST (BIAS - 65) /* 2**-65 */ long double acosl(long double x) { @@ -54,7 +39,8 @@ long double acosl(long double x) if (expsign > 0) return 0.0; /* acos(1) = 0 */ else - return pi + 2.0 * pio2_lo; /* acos(-1)= pi */ + // FIXME + return pi_hi + 2.0 * pio2_lo; /* acos(-1)= pi */ } return (x - x) / (x - x); /* acos(|x|>1) is NaN */ } @@ -67,15 +53,15 @@ long double acosl(long double x) r = p / q; return pio2_hi - (x - (pio2_lo - x * r)); } else if (expsign < 0) { /* x < -0.5 */ - z = (one + x) * 0.5; + z = (1.0 + x) * 0.5; p = P(z); q = Q(z); s = sqrtl(z); r = p / q; w = r * s - pio2_lo; - return pi - 2.0 * (s + w); + return pi_hi - 2.0 * (s + w); } else { /* x > 0.5 */ - z = (one - x) * 0.5; + z = (1.0 - x) * 0.5; s = sqrtl(z); u.e = s; u.bits.manl = 0;