diff options
-rw-r--r-- | math/libm-test.inc | 2 | ||||
-rw-r--r-- | sysdeps/i386/fpu/libm-test-ulps | 17 | ||||
-rw-r--r-- | 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 118f00a9ba..9c56e1cbc8 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 82d167cd18..76fb9f26f3 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 22a43848b2..e0a61f0658 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; } |