From 447885ebf1c1fc8adf4084f5e2708ff84d0da43b Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Fri, 16 Nov 2012 09:31:38 -0800 Subject: Don't generate underflow for very small values in log1pl. * sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl): If xm1 is smaller than LDBL_EPSILON/2.0L, just return xm1. --- sysdeps/ieee754/ldbl-128/s_log1pl.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'sysdeps/ieee754') diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c index 4ecea0fddd..fad18e9da2 100644 --- a/sysdeps/ieee754/ldbl-128/s_log1pl.c +++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c @@ -138,6 +138,12 @@ __log1pl (long double xm1) && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0) return xm1; + if ((hx & 0x7fffffff) < 0x3f8e0000) + { + if ((int) xm1 == 0) + return xm1; + } + x = xm1 + 1.0L; /* log1p(-1) = -inf */ -- cgit 1.4.1