about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2012-03-15 17:34:24 +0100
committerAndreas Jaeger <aj@suse.de>2012-03-15 17:34:24 +0100
commitee010c9e952bc68799b4584ec0ee27230109f890 (patch)
treed6c94d2c0e67311b62595199e725f62bc1ec98dc
parent8c0247db324000ab1281b3091ab4cdfd167a1c52 (diff)
downloadglibc-ee010c9e952bc68799b4584ec0ee27230109f890.tar.gz
glibc-ee010c9e952bc68799b4584ec0ee27230109f890.tar.xz
glibc-ee010c9e952bc68799b4584ec0ee27230109f890.zip
* sysdeps/i386/fpu/s_tanf.S: Delete so that i386 uses the
ieee754/flt-32 implementation for tan.
* math/libm-test.inc (tan_test): Add tests for large input.
* sysdeps/i386/fpu/libm-test-ulps: Update.
-rw-r--r--math/libm-test.inc13
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps18
-rw-r--r--sysdeps/i386/fpu/s_tanf.S55
3 files changed, 24 insertions, 62 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 760ec6b7ef..ddc8ea53d2 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -2113,7 +2113,7 @@ cos_test (void)
   TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L);
 
 #ifndef TEST_LDOUBLE
-  /* Enable for long double once x86 and x86-64 implementation is fixed.  */
+  /* Enable for long double once x86 and x86-64 implementations are fixed.  */
   TEST_f_f (cos, 0x1p65, 0.998886220660580136106421721793L);
   TEST_f_f (cos, -0x1p65, 0.998886220660580136106421721793L);
 #endif
@@ -6396,7 +6396,7 @@ sin_test (void)
   TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L);
 
 #ifndef TEST_LDOUBLE
-  /* Enable for long double once x86 and x86-64 implementation is fixed.  */
+  /* Enable for long double once x86 and x86-64 implementations are fixed.  */
   TEST_f_f (sin, 0x1p65, -0.0471838762123546738051061498057L);
   TEST_f_f (sin, -0x1p65, 0.0471838762123546738051061498057L);
 #endif
@@ -6576,7 +6576,7 @@ sincos_test (void)
   TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
 
 #ifndef TEST_LDOUBLE
-  /* Enable for long double once x86 and x86-64 implementation is fixed.  */
+  /* Enable for long double once x86 and x86-64 implementations are fixed.  */
   TEST_extra (sincos, 0x1p65, -0.0471838762123546738051061498057L, 0.998886220660580136106421721793L);
   TEST_extra (sincos, -0x1p65, 0.0471838762123546738051061498057L, 0.998886220660580136106421721793L);
 #endif
@@ -6784,6 +6784,13 @@ tan_test (void)
   TEST_f_f (tan, M_PI_4l, 1);
   TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L);
 
+#ifdef TEST_FLOAT
+  /* Enable for double and long double once x86 and x86-64
+     implementations are fixed.  */
+  TEST_f_f (tan, 0x1p65, -0.04723648723590479467984142193L);
+  TEST_f_f (tan, -0x1p65, 0.04723648723590479467984142193L);
+#endif
+
   END (tan);
 }
 
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 46caf8b6a1..73fc9a9562 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1518,14 +1518,16 @@ ldouble: 7
 # tan
 Test "tan (pi/4) == 1":
 double: 1
+float: 1
 idouble: 1
+ifloat: 1
 
 # tan_downward
 Test "tan_downward (1) == 1.5574077246549022305069748074583601730873":
 double: 1
-float: 1
+float: 2
 idouble: 1
-ifloat: 1
+ifloat: 2
 Test "tan_downward (10) == 0.6483608274590866712591249330098086768169":
 float: 1
 ifloat: 1
@@ -1569,6 +1571,8 @@ Test "tan_tonearest (1) == 1.5574077246549022305069748074583601730873":
 ildouble: 1
 ldouble: 1
 Test "tan_tonearest (2) == -2.1850398632615189916433061023136825434320":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312":
@@ -1629,6 +1633,8 @@ ldouble: 1
 
 # tan_upward
 Test "tan_upward (1) == 1.5574077246549022305069748074583601730873":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 Test "tan_upward (10) == 0.6483608274590866712591249330098086768169":
@@ -2334,17 +2340,21 @@ ldouble: 27
 
 Function: "tan":
 double: 1
+float: 1
 idouble: 1
+ifloat: 1
 
 Function: "tan_downward":
 double: 1
-float: 1
+float: 2
 idouble: 1
-ifloat: 1
+ifloat: 2
 ildouble: 1
 ldouble: 1
 
 Function: "tan_tonearest":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 
diff --git a/sysdeps/i386/fpu/s_tanf.S b/sysdeps/i386/fpu/s_tanf.S
deleted file mode 100644
index 74bc22fceb..0000000000
--- a/sysdeps/i386/fpu/s_tanf.S
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Written by J.T. Conklin <jtc@netbsd.org>.
- * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
- * Public domain.
- */
-
-#define __need_Emath
-#include <bits/errno.h>
-#include <machine/asm.h>
-
-RCSID("$NetBSD: s_tanf.S,v 1.3 1995/05/09 00:31:09 jtc Exp $")
-
-ENTRY(__tanf)
-	flds	4(%esp)
-	fxam
-	fstsw	%ax
-	movb	$0x45, %dh
-	andb	%ah, %dh
-	cmpb	$0x05, %dh
-	je	3f
-4:	fptan
-	fnstsw	%ax
-	testl	$0x400,%eax
-	jnz	1f
-	fstp	%st(0)
-	ret
-1:	fldpi
-	fadd	%st(0)
-	fxch	%st(1)
-2:	fprem1
-	fstsw	%ax
-	testl	$0x400,%eax
-	jnz	2b
-	fstp	%st(1)
-	fptan
-	fstp	%st(0)
-	ret
-3:
-#ifdef PIC
-	pushl	%ebx
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (ebx, 0)
-	LOAD_PIC_REG (bx)
-	call	__errno_location@PLT
-	movl	$EDOM, (%eax)
-	popl	%ebx
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (ebx)
-#else
-	call	__errno_location@PLT
-	movl	$EDOM, (%eax)
-#endif
-	jmp	4b
-END (__tanf)
-weak_alias (__tanf, tanf)