math: fix exception behaviour of expm1l.c on inf and nan
[musl] / src / math / atanf.c
index 8c2b46b..4e31b90 100644 (file)
@@ -38,9 +38,7 @@ static const float aT[] = {
   6.1687607318e-02,
 };
 
-static const float
-one = 1.0,
-huge = 1.0e30;
+static const float huge = 1.0e30;
 
 float atanf(float x)
 {
@@ -60,7 +58,7 @@ float atanf(float x)
        if (ix < 0x3ee00000) {   /* |x| < 0.4375 */
                if (ix < 0x39800000) {  /* |x| < 2**-12 */
                        /* raise inexact */
-                       if(huge+x>one)
+                       if(huge+x>1.0f)
                                return x;
                }
                id = -1;
@@ -69,18 +67,18 @@ float atanf(float x)
                if (ix < 0x3f980000) {  /* |x| < 1.1875 */
                        if (ix < 0x3f300000) {  /*  7/16 <= |x| < 11/16 */
                                id = 0;
-                               x = ((float)2.0*x-one)/((float)2.0+x);
+                               x = (2.0f*x - 1.0f)/(2.0f + x);
                        } else {                /* 11/16 <= |x| < 19/16 */
                                id = 1;
-                               x = (x-one)/(x+one);
+                               x = (x - 1.0f)/(x + 1.0f);
                        }
                } else {
                        if (ix < 0x401c0000) {  /* |x| < 2.4375 */
                                id = 2;
-                               x = (x-(float)1.5)/(one+(float)1.5*x);
+                               x = (x - 1.5f)/(1.0f + 1.5f*x);
                        } else {                /* 2.4375 <= |x| < 2**26 */
                                id = 3;
-                               x = -(float)1.0/x;
+                               x = -1.0f/x;
                        }
                }
        }