Print this page

        

*** 121,131 **** #define Lp7 xxx[9] #define zero xxx[10] double log1p(double x) { ! double hfsq, f, c, s, z, R, u; int k, hx, hu, ax; hx = ((int *)&x)[HIWORD]; /* high word of x */ ax = hx & 0x7fffffff; --- 121,131 ---- #define Lp7 xxx[9] #define zero xxx[10] double log1p(double x) { ! double hfsq, f, c = 0.0, s, z, R, u; int k, hx, hu, ax; hx = ((int *)&x)[HIWORD]; /* high word of x */ ax = hx & 0x7fffffff;
*** 150,159 **** --- 150,160 ---- k = 0; f = x; hu = 1; } } + /* We will initialize 'c' here. */ if (k != 0) { if (hx < 0x43400000) { u = 1.0 + x; hu = ((int *)&u)[HIWORD]; /* high word of u */ k = (hu >> 20) - 1023;
*** 181,190 **** --- 182,192 ---- hfsq = 0.5 * f * f; if (hu == 0) { /* |f| < 2**-20 */ if (f == zero) { if (k == 0) return (zero); + /* We already initialized 'c' before, when (k != 0) */ c += k * ln2_lo; return (k * ln2_hi + c); } R = hfsq * (1.0 - 0.66666666666666666 * f); if (k == 0)