52 6.93147180369123816490e-01,
53 -6.93147180369123816490e-01,
56 1.90821492927058770002e-10,
57 -1.90821492927058770002e-10,
60 P1 = 1.66666666666666019037e-01,
61 P2 = -2.77777777770155933842e-03,
62 P3 = 6.61375632143793436117e-05,
63 P4 = -1.65339022054652515390e-06,
64 P5 = 4.13813679705723846039e-08;
140 double y, hi, lo, c, t;
148 xsb = (hx >> 31) & 1;
153 if (hx >= 0x40862E42)
155 if (hx >= 0x7FF00000)
159 if (((hx & 0xFFFFF) | lx) != 0)
165 return (xsb == 0) ? x : 0.0;
196 hi = x - t *
ln2HI[0];
202 else if (hx < 0x3E300000)
220 c = x - t * (
P1 + t * (
P2 + t * (
P3 + t * (
P4 + t *
P5))));
223 return one - ((x * c) / (c - 2.0) - x);
226 y =
one - ((lo - (x * c) / (2.0 - c)) - hi);
static const double halF[2]
#define GET_HIGH_WORD(i, d)
Get the more significant 32 bit int from a double.
static const double u_threshold
#define GET_LOW_WORD(i, d)
Get the less significant 32 bit int from a double.
static const double ln2LO[2]
static const double ln2HI[2]
static const double twom1000
static const double o_threshold
static const double invln2
#define SET_HIGH_WORD(d, v)
Set the more significant 32 bits of a double from an int.
double exp(double x)
Returns the exponential of x.