Index: fusl/src/math/acosf.c |
diff --git a/fusl/src/math/acosf.c b/fusl/src/math/acosf.c |
index 8ee1a71d0cc2965e08e170be1dc4529d0165f3b4..83ef10e7e2be858a4d51a5b3942bba2c941efd08 100644 |
--- a/fusl/src/math/acosf.c |
+++ b/fusl/src/math/acosf.c |
@@ -15,57 +15,52 @@ |
#include "libm.h" |
-static const float |
-pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */ |
-pio2_lo = 7.5497894159e-08, /* 0x33a22168 */ |
-pS0 = 1.6666586697e-01, |
-pS1 = -4.2743422091e-02, |
-pS2 = -8.6563630030e-03, |
-qS1 = -7.0662963390e-01; |
+static const float pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */ |
+ pio2_lo = 7.5497894159e-08, /* 0x33a22168 */ |
+ pS0 = 1.6666586697e-01, pS1 = -4.2743422091e-02, pS2 = -8.6563630030e-03, |
+ qS1 = -7.0662963390e-01; |
-static float R(float z) |
-{ |
- float_t p, q; |
- p = z*(pS0+z*(pS1+z*pS2)); |
- q = 1.0f+z*qS1; |
- return p/q; |
+static float R(float z) { |
+ float_t p, q; |
+ p = z * (pS0 + z * (pS1 + z * pS2)); |
+ q = 1.0f + z * qS1; |
+ return p / q; |
} |
-float acosf(float x) |
-{ |
- float z,w,s,c,df; |
- uint32_t hx,ix; |
+float acosf(float x) { |
+ float z, w, s, c, df; |
+ uint32_t hx, ix; |
- GET_FLOAT_WORD(hx, x); |
- ix = hx & 0x7fffffff; |
- /* |x| >= 1 or nan */ |
- if (ix >= 0x3f800000) { |
- if (ix == 0x3f800000) { |
- if (hx >> 31) |
- return 2*pio2_hi + 0x1p-120f; |
- return 0; |
- } |
- return 0/(x-x); |
- } |
- /* |x| < 0.5 */ |
- if (ix < 0x3f000000) { |
- if (ix <= 0x32800000) /* |x| < 2**-26 */ |
- return pio2_hi + 0x1p-120f; |
- return pio2_hi - (x - (pio2_lo-x*R(x*x))); |
- } |
- /* x < -0.5 */ |
- if (hx >> 31) { |
- z = (1+x)*0.5f; |
- s = sqrtf(z); |
- w = R(z)*s-pio2_lo; |
- return 2*(pio2_hi - (s+w)); |
- } |
- /* x > 0.5 */ |
- z = (1-x)*0.5f; |
- s = sqrtf(z); |
- GET_FLOAT_WORD(hx,s); |
- SET_FLOAT_WORD(df,hx&0xfffff000); |
- c = (z-df*df)/(s+df); |
- w = R(z)*s+c; |
- return 2*(df+w); |
+ GET_FLOAT_WORD(hx, x); |
+ ix = hx & 0x7fffffff; |
+ /* |x| >= 1 or nan */ |
+ if (ix >= 0x3f800000) { |
+ if (ix == 0x3f800000) { |
+ if (hx >> 31) |
+ return 2 * pio2_hi + 0x1p-120f; |
+ return 0; |
+ } |
+ return 0 / (x - x); |
+ } |
+ /* |x| < 0.5 */ |
+ if (ix < 0x3f000000) { |
+ if (ix <= 0x32800000) /* |x| < 2**-26 */ |
+ return pio2_hi + 0x1p-120f; |
+ return pio2_hi - (x - (pio2_lo - x * R(x * x))); |
+ } |
+ /* x < -0.5 */ |
+ if (hx >> 31) { |
+ z = (1 + x) * 0.5f; |
+ s = sqrtf(z); |
+ w = R(z) * s - pio2_lo; |
+ return 2 * (pio2_hi - (s + w)); |
+ } |
+ /* x > 0.5 */ |
+ z = (1 - x) * 0.5f; |
+ s = sqrtf(z); |
+ GET_FLOAT_WORD(hx, s); |
+ SET_FLOAT_WORD(df, hx & 0xfffff000); |
+ c = (z - df * df) / (s + df); |
+ w = R(z) * s + c; |
+ return 2 * (df + w); |
} |