20 ln2_hi = 6.9313812256e-01,
21 ln2_lo = 9.0580006145e-06,
22 two25 = 3.355443200e+07,
23 Lp1 = 6.6666668653e-01,
24 Lp2 = 4.0000000596e-01,
25 Lp3 = 2.8571429849e-01,
26 Lp4 = 2.2222198546e-01,
27 Lp5 = 1.8183572590e-01,
28 Lp6 = 1.5313838422e-01,
29 Lp7 = 1.4798198640e-01;
31 static const float zero = 0.0;
36 float hfsq,f,
c,s,z,R,u;
43 if (hx < 0x3ed413d7) {
45 if(x==(
float)-1.0)
return -two25/zero;
46 else return (x-x)/(x-x);
53 return x - x*x*(float)0.5;
55 if(hx>0||hx<=((
int32_t)0xbe95f61f)) {
58 if (hx >= 0x7f800000)
return x+x;
65 c = (k>0)? (
float)1.0-(u-x):x-(u-(
float)1.0);
79 hu = (0x00800000-hu)>>2;
85 if(f==zero)
if(k==0)
return zero;
86 else {
c += k*ln2_lo;
return k*ln2_hi+
c;}
87 R = hfsq*((float)1.0-(
float)0.66666666666666666*f);
88 if(k==0)
return f-R;
else 89 return k*ln2_hi-((R-(k*ln2_lo+
c))-f);
93 R = z*(Lp1+z*(Lp2+z*(Lp3+z*(Lp4+z*(Lp5+z*(Lp6+z*Lp7))))));
94 if(k==0)
return f-(hfsq-s*(hfsq+R));
else 95 return k*ln2_hi-((hfsq-(s*(hfsq+R)+(k*ln2_lo+
c)))-f);
#define SET_FLOAT_WORD(d, i)
#define GET_FLOAT_WORD(i, d)