115 o_threshold = 7.09782712893383973096e+02,
116 ln2_hi = 6.93147180369123816490e-01,
117 ln2_lo = 1.90821492927058770002e-10,
118 invln2 = 1.44269504088896338700e+00,
120 Q1 = -3.33333333333331316428e-02,
121 Q2 = 1.58730158725481460165e-03,
122 Q3 = -7.93650757867487942473e-05,
123 Q4 = 4.00821782732936239552e-06,
124 Q5 = -2.01099218183624371326e-07;
129 double y,hi,lo,
c,t,e,hxs,hfx,r1;
135 if(xsb==0) y=x;
else y= -x;
139 if(hx >= 0x4043687A) {
140 if(hx >= 0x40862E42) {
144 if(((hx&0xfffff)|low)!=0)
146 else return (xsb==0)? x:-1.0;
148 if(x > o_threshold)
return huge*huge;
157 if(hx > 0x3fd62e42) {
158 if(hx < 0x3FF0A2B2) {
160 {hi = x - ln2_hi; lo = ln2_lo; k = 1;}
162 {hi = x + ln2_hi; lo = -ln2_lo; k = -1;}
164 k = invln2*x+((xsb==0)?0.5:-0.5);
172 else if(hx < 0x3c900000) {
174 return x - (t-(huge+x));
183 e = hxs*((r1-t)/(6.0 - x*t));
184 if(k==0)
return x - (x*e-hxs);
188 if(k== -1)
return 0.5*(x-e)-0.5;
190 if(x < -0.25)
return -2.0*(e-(x+0.5));
191 else return one+2.0*(x-e);
192 if (k <= -2 || k>56) {
#define GET_HIGH_WORD(i, d)
#define SET_HIGH_WORD(d, v)
#define GET_LOW_WORD(i, d)