about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2001-07-23 13:23:30 +0000
committerAndreas Jaeger <aj@suse.de>2001-07-23 13:23:30 +0000
commitbdce812bdb61b8817dda4d0991e41ca5a2a36885 (patch)
tree5e0e36060272993fe36af65730754cb9fca79322 /sysdeps
parentdacbc9832b21e75ff8e652cf1bab69711ba1ddd1 (diff)
downloadglibc-bdce812bdb61b8817dda4d0991e41ca5a2a36885.tar.gz
glibc-bdce812bdb61b8817dda4d0991e41ca5a2a36885.tar.xz
glibc-bdce812bdb61b8817dda4d0991e41ca5a2a36885.zip
Update.
2001-07-23  Stephen L Moshier <moshier@mediaone.net>

	* 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.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/ldbl-128/s_log1pl.c22
1 files changed, 11 insertions, 11 deletions
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);
     }