*** 52,65 **** return (x + x); if (x < -1.L) return (logl(x)); rd = __swapRD(fp_nearest); y = 1.L + x; ! if (y != 1.L) if (y == x) x = logl(x); else x *= logl(y) / (y - 1.L); if (rd != fp_nearest) (void) __swapRD(rd); return (x); } --- 52,66 ---- return (x + x); if (x < -1.L) return (logl(x)); rd = __swapRD(fp_nearest); y = 1.L + x; ! if (y != 1.L) { if (y == x) x = logl(x); else x *= logl(y) / (y - 1.L); + } if (rd != fp_nearest) (void) __swapRD(rd); return (x); }