#include "libm.h"
static const float
-one = 1.0,
halF[2] = {0.5,-0.5,},
huge = 1.0e+30,
o_threshold = 8.8721679688e+01, /* 0x42b17180 */
P1 = 1.6666625440e-1, /* 0xaaaa8f.0p-26 */
P2 = -2.7667332906e-3; /* -0xb55215.0p-32 */
-static volatile float twom100 = 7.8886090522e-31; /* 2**-100=0x0d800000 */
+static const volatile float twom100 = 7.8886090522e-31; /* 2**-100=0x0d800000 */
float expf(float x)
{
STRICT_ASSIGN(float, x, hi - lo);
} else if(hx < 0x39000000) { /* |x|<2**-14 */
/* raise inexact */
- if (huge+x > one)
- return one + x;
+ if (huge+x > 1.0f)
+ return 1.0f + x;
} else
k = 0;
SET_FLOAT_WORD(twopk, 0x3f800000+((k+100)<<23));
c = x - t*(P1+t*P2);
if (k == 0)
- return one - ((x*c)/(c-(float)2.0)-x);
- y = one - ((lo-(x*c)/((float)2.0-c))-hi);
+ return 1.0f - ((x*c)/(c - 2.0f) - x);
+ y = 1.0f - ((lo - (x*c)/(2.0f - c)) - hi);
if (k < -125)
return y*twopk*twom100;
if (k == 128)
- return y*2.0F*0x1p127F;
+ return y*2.0f*0x1p127f;
return y*twopk;
}