aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754/dbl-64/s_log1p.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/dbl-64/s_log1p.c')
-rw-r--r--sysdeps/ieee754/dbl-64/s_log1p.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sysdeps/ieee754/dbl-64/s_log1p.c b/sysdeps/ieee754/dbl-64/s_log1p.c
index 86bbfbacaf..cff555b0aa 100644
--- a/sysdeps/ieee754/dbl-64/s_log1p.c
+++ b/sysdeps/ieee754/dbl-64/s_log1p.c
@@ -78,6 +78,7 @@
* See HP-15C Advanced Functions Handbook, p.193.
*/
+#include <float.h>
#include <math.h>
#include <math_private.h>
@@ -118,7 +119,14 @@ __log1p (double x)
{
math_force_eval (two54 + x); /* raise inexact */
if (ax < 0x3c900000) /* |x| < 2**-54 */
- return x;
+ {
+ if (fabs (x) < DBL_MIN)
+ {
+ double force_underflow = x * x;
+ math_force_eval (force_underflow);
+ }
+ return x;
+ }
else
return x - x * x * 0.5;
}