82 ln2_hi = 6.93147180369123816490e-01,
83 ln2_lo = 1.90821492927058770002e-10,
84 two54 = 1.80143985094819840000e+16,
85 Lp1 = 6.666666666666735130e-01,
86 Lp2 = 3.999999999940941908e-01,
87 Lp3 = 2.857142874366239149e-01,
88 Lp4 = 2.222219843214978396e-01,
89 Lp5 = 1.818357216161805012e-01,
90 Lp6 = 1.531383769920937332e-01,
91 Lp7 = 1.479819860511658591e-01;
93 static const double zero = 0.0;
98 double hfsq,f,
c,s,z,R,u;
105 if (hx < 0x3FDA827A) {
107 if(x==-1.0)
return -two54/zero;
108 else return (x-x)/(x-x);
117 if(hx>0||hx<=((
int32_t)0xbfd2bec3)) {
120 if (hx >= 0x7ff00000)
return x+x;
126 c = (k>0)? 1.0-(u-x):x-(u-1.0);
140 hu = (0x00100000-hu)>>2;
146 if(f==zero)
if(k==0)
return zero;
147 else {
c += k*ln2_lo;
return k*ln2_hi+
c;}
148 R = hfsq*(1.0-0.66666666666666666*f);
149 if(k==0)
return f-R;
else 150 return k*ln2_hi-((R-(k*ln2_lo+
c))-f);
154 R = z*(Lp1+z*(Lp2+z*(Lp3+z*(Lp4+z*(Lp5+z*(Lp6+z*Lp7))))));
155 if(k==0)
return f-(hfsq-s*(hfsq+R));
else 156 return k*ln2_hi-((hfsq-(s*(hfsq+R)+(k*ln2_lo+
c)))-f);
#define GET_HIGH_WORD(i, d)
#define SET_HIGH_WORD(d, v)