floatscan: fix incorrect count of leading nonzero digits
[musl] / src / math / acosf.c
index dd3bba2..d875f3e 100644 (file)
 #include "libm.h"
 
 static const float
-one = 1.0000000000e+00, /* 0x3F800000 */
-pi  = 3.1415925026e+00, /* 0x40490fda */
+pi      = 3.1415925026e+00, /* 0x40490fda */
 pio2_hi = 1.5707962513e+00; /* 0x3fc90fda */
-static volatile float
+static const volatile float
 pio2_lo = 7.5497894159e-08; /* 0x33a22168 */
 static const float
 pS0 =  1.6666586697e-01,
@@ -36,8 +35,8 @@ float acosf(float x)
        ix = hx & 0x7fffffff;
        if (ix >= 0x3f800000) {  /* |x| >= 1 */
                if (ix == 0x3f800000) {  /* |x| == 1 */
-                       if(hx>0) return 0.0;  /* acos(1) = 0 */
-                       return pi + (float)2.0*pio2_lo;  /* acos(-1)= pi */
+                       if (hx > 0) return 0.0f;  /* acos(1) = 0 */
+                       return pi + 2.0f*pio2_lo;  /* acos(-1)= pi */
                }
                return (x-x)/(x-x);  /* acos(|x|>1) is NaN */
        }
@@ -46,30 +45,30 @@ float acosf(float x)
                        return pio2_hi + pio2_lo;
                z = x*x;
                p = z*(pS0+z*(pS1+z*pS2));
-               q = one+z*qS1;
+               q = 1.0f+z*qS1;
                r = p/q;
                return pio2_hi - (x - (pio2_lo-x*r));
        } else if (hx < 0) {     /* x < -0.5 */
-               z = (one+x)*(float)0.5;
+               z = (1.0f+x)*0.5f;
                p = z*(pS0+z*(pS1+z*pS2));
-               q = one+z*qS1;
+               q = 1.0f+z*qS1;
                s = sqrtf(z);
                r = p/q;
                w = r*s-pio2_lo;
-               return pi - (float)2.0*(s+w);
+               return pi - 2.0f*(s+w);
        } else {                 /* x > 0.5 */
                int32_t idf;
 
-               z = (one-x)*(float)0.5;
+               z = (1.0f-x)*0.5f;
                s = sqrtf(z);
                df = s;
                GET_FLOAT_WORD(idf,df);
                SET_FLOAT_WORD(df,idf&0xfffff000);
                c  = (z-df*df)/(s+df);
                p = z*(pS0+z*(pS1+z*pS2));
-               q = one+z*qS1;
+               q = 1.0f+z*qS1;
                r = p/q;
                w = r*s+c;
-               return (float)2.0*(df+w);
+               return 2.0f*(df+w);
        }
 }