From fa9ced58f6e12a594e5250df52875cf1d67a50f0 Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Mon, 27 Aug 2001 13:55:13 +0000 Subject: [PATCH] * sysdeps/i386/fpu/libm-test-ulps (float): Add ulps for new tests. * math/libm-test.inc (j0_test): Add extra tests. * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Use |x|, not x, in Hankel approximation. Patches by Stephen L Moshier. --- math/libm-test.inc | 2 ++ sysdeps/i386/fpu/libm-test-ulps | 17 +++++++++++++++++ sysdeps/ieee754/ldbl-128/e_j0l.c | 8 ++++---- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/math/libm-test.inc b/math/libm-test.inc index 118f00a..9c56e1c 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -2865,6 +2865,8 @@ j0_test (void) TEST_f_f (j0, 2.0, 0.22389077914123566805L); TEST_f_f (j0, 8.0, 0.17165080713755390609L); TEST_f_f (j0, 10.0, -0.24593576445134833520L); + TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L); + TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L); END (j0); } diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps index 82d167c..76fb9f2 100644 --- a/sysdeps/i386/fpu/libm-test-ulps +++ b/sysdeps/i386/fpu/libm-test-ulps @@ -681,6 +681,21 @@ ifloat: 1 Test "j0 (10.0) == -0.24593576445134833520": double: 2 idouble: 2 +Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 +Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + # j1 Test "j1 (10.0) == 0.043472746168861436670": @@ -1500,6 +1515,8 @@ float: 1 ifloat: 1 double: 2 idouble: 2 +ldouble: 1 +ildouble: 1 Function: "j1": double: 2 diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c index 22a4384..e0a61f0 100644 --- a/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -754,16 +754,16 @@ __ieee754_j0l (long double x) = 1/sqrt(2) * (sin(x) - cos(x)) sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) cf. Fdlibm. */ - c = cosl (x); - s = sinl (x); + c = cosl (xx); + s = sinl (xx); ss = s - c; cc = s + c; - z = -cosl (x + x); + z = -cosl (xx + xx); if ((s * c) < 0) cc = z / ss; else ss = z / cc; - z = ONEOSQPI * (p * cc - q * ss) / sqrtl (x); + z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx); return z; } -- 2.7.4