From bdce812bdb61b8817dda4d0991e41ca5a2a36885 Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Mon, 23 Jul 2001 13:23:30 +0000 Subject: Update. 2001-07-23 Stephen L Moshier * sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl): Return proper sign for 0 input and set divide by zero exception for -1 input. Return argument if NaN or infinity. --- sysdeps/ieee754/ldbl-128/s_log1pl.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'sysdeps/ieee754/ldbl-128') diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c index fcb6ecc8a4..c19bea83d1 100644 --- a/sysdeps/ieee754/ldbl-128/s_log1pl.c +++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c @@ -120,23 +120,23 @@ __log1pl (long double xm1) int32_t ix; int e; - x = xm1 + 1.0L; - - /* Test for domain errors. */ - if (x > maxlog) - return (big * big); - - /* Test for NaN input. */ + /* Test for NaN or infinity input. */ u.value = xm1; ix = u.parts32.w0 & 0x7fffffff; - if ((ix >= 0x7fff0000) - && (((ix & 0xffff) | u.parts32.w1 | u.parts32.w2 | u.parts32.w3) != 0)) - return x; + if (ix >= 0x7fff0000) + return xm1; + + /* log1p(+- 0) = +- 0. */ + if ((ix == 0) && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0) + return xm1; + + x = xm1 + 1.0L; + /* log1p(-1) = -inf */ if (x <= 0.0L) { if (x == 0.0L) - return (-big * big); + return (-1.0L / zero); else return (zero / zero); } -- cgit 1.4.1