@@ -125,6 +125,11 @@ __ieee754_exp(double x) /* default IEEE double exp */
if(x < u_threshold) return twom1000*twom1000; /* underflow */
}
+ /* by pure bad luck, this implementation's error for x==1.0 is
+ unusually large, although still within 1 ulp. */
+ if (x == 1.0)
+ return 2.718281828459045235360;
+
/* argument reduction */
if(hx > 0x3fd62e42) { /* if |x| > 0.5 ln2 */
if(hx < 0x3FF0A2B2) { /* and |x| < 1.5 ln2 */