about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--math/libm-test.inc2
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps17
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j0l.c8
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;
 }