summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--sysdeps/i386/fpu/e_asinl.S22
-rw-r--r--sysdeps/ieee754/ldbl-96/e_asinl.c2
3 files changed, 4 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index 775e23fe44..7628b4f8ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2001-04-05  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/ieee754/ldbl-96/e_asinl.c: Correct handling of +-Inf.
+	* sysdeps/i386/fpu/e_asinl.S: Removed.  Too inaccurate.
+
 	* login/tst-utmp.c: Make file usable again in tst-utmpx.c.
 
 2001-04-04  Ulrich Drepper  <drepper@redhat.com>
diff --git a/sysdeps/i386/fpu/e_asinl.S b/sysdeps/i386/fpu/e_asinl.S
deleted file mode 100644
index 3919fbcf58..0000000000
--- a/sysdeps/i386/fpu/e_asinl.S
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Written by J.T. Conklin <jtc@netbsd.org>.
- * Public domain.
- *
- * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
- */
-
-#include <machine/asm.h>
-
-RCSID("$NetBSD: $")
-
-/* asinl = atanl (x / sqrtl(1 - x^2)) */
-ENTRY(__ieee754_asinl)
-	fldt	4(%esp)			/* x */
-	fld	%st
-	fmul	%st(0)			/* x^2 */
-	fld1
-	fsubp				/* 1 - x^2 */
-	fsqrt				/* sqrt (1 - x^2) */
-	fpatan
-	ret
-END (__ieee754_asinl)
diff --git a/sysdeps/ieee754/ldbl-96/e_asinl.c b/sysdeps/ieee754/ldbl-96/e_asinl.c
index f5d817b53a..202e245a41 100644
--- a/sysdeps/ieee754/ldbl-96/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-96/e_asinl.c
@@ -92,7 +92,7 @@ __ieee754_asinl (x)
   ix = (ix << 16) | (i0 >> 16);
   if (ix >= 0x3fff8000)
     {				/* |x|>= 1 */
-      if (((i0 - 0x80000000) | i1) == 0)
+      if (ix < 0x7fff0000 && ((i0 - 0x80000000) | i1) == 0)
 	/* asin(1)=+-pi/2 with inexact */
 	return x * pio2_hi + x * pio2_lo;
       return (x - x) / (x - x);	/* asin(|x|>1) is NaN */