math: use double_t for temporaries to avoid stores on i386
[musl] / src / math / asin.c
index a1906b0..3e8f99e 100644 (file)
@@ -58,7 +58,7 @@ qS4 =  7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
 
 static double R(double z)
 {
-       double p, q;
+       double_t p, q;
        p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
        q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
        return p/q;
@@ -77,14 +77,14 @@ double asin(double x)
                GET_LOW_WORD(lx, x);
                if ((ix-0x3ff00000 | lx) == 0)
                        /* asin(1) = +-pi/2 with inexact */
-                       return x*pio2_hi + 0x1p-1000;
+                       return x*pio2_hi + 0x1p-120f;
                return 0/(x-x);
        }
        /* |x| < 0.5 */
        if (ix < 0x3fe00000) {
                if (ix < 0x3e500000) {
                        /* |x|<0x1p-26, return x with inexact if x!=0*/
-                       FORCE_EVAL(x + 0x1p1000);
+                       FORCE_EVAL(x + 0x1p120f);
                        return x;
                }
                return x + x*R(x*x);