about summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
Diffstat (limited to 'math')
-rw-r--r--math/libm-test.c100
-rw-r--r--math/test-fenv.c17
2 files changed, 67 insertions, 50 deletions
diff --git a/math/libm-test.c b/math/libm-test.c
index 1b0b163e99..efb89f7033 100644
--- a/math/libm-test.c
+++ b/math/libm-test.c
@@ -869,8 +869,8 @@ acosh_test (void)
 #endif
 
   check ("acosh(1) == 0", FUNC(acosh) (1), 0);
-  check ("acosh(7) == 2.633915793...", FUNC(acosh) (7),
-	 2.6339157938496334172L);
+  check_eps ("acosh(7) == 2.633915793...", FUNC(acosh) (7),
+	     2.6339157938496334172L, CHOOSE (3e-19, 0, 0));
 }
 
 
@@ -1069,7 +1069,7 @@ cbrt_test (void)
   check_eps ("cbrt (0.970299) == 0.99", FUNC(cbrt) (0.970299), 0.99,
 	     CHOOSE (2e-17L, 0, 0));
   check_eps ("cbrt (0.7) == .8879040017...", FUNC(cbrt) (0.7),
-	     0.8879040017426007084L, CHOOSE(2e-17L, 2e-16, 0));
+	     0.8879040017426007084L, CHOOSE(2e-17L, 6e-16, 0));
 
 }
 
@@ -2688,15 +2688,15 @@ cexp_test (void)
 
   result = FUNC(cexp) (BUILD_COMPLEX (0.7, 1.2));
   check_eps ("real(cexp(0.7 + i 1.2)) == 0.72969...", __real__ result,
-	     0.7296989091503236012L, CHOOSE(6e-17L, 0, 6e-8));
+	     0.7296989091503236012L, CHOOSE(6e-17L, 0, 2e-7));
   check_eps ("imag(cexp(0.7 + i 1.2)) == 1.87689...", __imag__ result,
-	     1.8768962328348102821L, CHOOSE(2e-16L, 0, 0));
+	     1.8768962328348102821L, CHOOSE(2e-16L, 0, 3e-7));
 
   result = FUNC(cexp) (BUILD_COMPLEX (-2, -3));
-  check_eps ("real(cexp(-2 - i 3)) == --0.13398...", __real__ result,
-	     -0.1339809149295426134L, CHOOSE(6e-20L, 0, 0));
+  check_eps ("real(cexp(-2 - i 3)) == -0.13398...", __real__ result,
+	     -0.1339809149295426134L, CHOOSE(6e-20L, 0, 2e-8));
   check_eps ("imag(cexp(-2 - i 3)) == -0.01909...", __imag__ result,
-	     -0.0190985162611351964L, CHOOSE(4e-20L, 0, 0));
+	     -0.0190985162611351964L, CHOOSE(4e-20L, 0, 2e-9));
 }
 
 
@@ -2871,13 +2871,13 @@ csin_test (void)
   check_eps ("real(csin(0.7 + i 1.2)) = 1.166456341...", __real__ result,
 	     1.1664563419657581376L, CHOOSE(2e-16L, 0, 0));
   check_eps ("imag(csin(0.7 + i 1.2)) = 1.154499724...", __imag__ result,
-	     1.1544997246948547371L, CHOOSE(2e-17L, 0, 0));
+	     1.1544997246948547371L, CHOOSE(2e-17L, 0, 2e-7));
 
   result = FUNC(csin) (BUILD_COMPLEX (-2, -3));
-  check ("real(csin(-2 - i 3)) == --9.15449...", __real__ result,
-	 -9.1544991469114295734L);
-  check ("imag(csin(-2 - i 3)) == -4.16890...", __imag__ result,
-	 4.1689069599665643507L);
+  check_eps ("real(csin(-2 - i 3)) == -9.15449...", __real__ result,
+	     -9.1544991469114295734L, CHOOSE(4e-18L, 0, 1e-6));
+  check_eps ("imag(csin(-2 - i 3)) == -4.16890...", __imag__ result,
+	     4.1689069599665643507L, CHOOSE(2e-17L, 0, 5e-7));
 }
 
 
@@ -3052,13 +3052,13 @@ csinh_test (void)
   check_eps ("real(csinh(0.7 + i 1.2)) = 0.274878686...", __real__ result,
 	     0.27487868678117583582L, CHOOSE(2e-17L, 6e-17, 3e-8));
   check_eps ("imag(csinh(0.7 + i 1.2)) = 1.169866572...", __imag__ result,
-	     1.1698665727426565139L, CHOOSE(6e-17L, 0, 3e-8));
+	     1.1698665727426565139L, CHOOSE(6e-17L, 0, 2e-7));
 
   result = FUNC(csinh) (BUILD_COMPLEX (-2, -3));
   check_eps ("real(csinh(-2 - i 3)) == -3.59056...", __real__ result,
-	     3.5905645899857799520L, CHOOSE(0, 5e-16, 0));
+	     3.5905645899857799520L, CHOOSE(7e-19L, 5e-16, 3e-7));
   check_eps ("imag(csinh(-2 - i 3)) == -0.53092...", __imag__ result,
-	     -0.5309210862485198052L, CHOOSE(2e-19L, 2e-16, 6e-8));
+	     -0.5309210862485198052L, CHOOSE(3e-19L, 2e-16, 6e-8));
 }
 
 
@@ -3229,15 +3229,15 @@ ccos_test (void)
 
   result = FUNC(ccos) (BUILD_COMPLEX (0.7, 1.2));
   check_eps ("real(ccos(0.7 + i 1.2)) = 1.384865764...", __real__ result,
-	     1.3848657645312111080L, CHOOSE(6e-19L, 3e-16, 2e-7));
+	     1.3848657645312111080L, CHOOSE(4e-18L, 3e-16, 2e-7));
   check_eps ("imag(ccos(0.7 + i 1.2)) = -0.972421703...", __imag__ result,
 	     -0.97242170335830028619L, CHOOSE(2e-16L, 2e-16, 0));
 
   result = FUNC(ccos) (BUILD_COMPLEX (-2, -3));
-  check ("real(ccos(-2 - i 3)) == --4.18962...", __real__ result,
-	 -4.1896256909688072301L);
+  check_eps ("real(ccos(-2 - i 3)) == -4.18962...", __real__ result,
+	     -4.1896256909688072301L, CHOOSE(2e-17L, 0, 5e-7));
   check_eps ("imag(ccos(-2 - i 3)) == -9.10922...", __imag__ result,
-	     -9.1092278937553365979L, CHOOSE(9e-19L, 0, 1e-6));
+	     -9.1092278937553365979L, CHOOSE(3e-18L, 0, 1e-6));
 }
 
 
@@ -3408,15 +3408,15 @@ ccosh_test (void)
 
   result = FUNC(ccosh) (BUILD_COMPLEX (0.7, 1.2));
   check_eps ("real(ccosh(0.7 + i 1.2)) == 0.45482...", __real__ result,
-	     0.4548202223691477654L, CHOOSE(4e-17L, 6e-17, 3e-8));
+	     0.4548202223691477654L, CHOOSE(5e-17L, 6e-17, 9e-8));
   check_eps ("imag(ccosh(0.7 + i 1.2)) == 0.70702...", __imag__ result,
 	     0.7070296600921537682L, CHOOSE(7e-17L, 0, 0));
 
   result = FUNC(ccosh) (BUILD_COMPLEX (-2, -3));
-  check ("real(ccosh(-2 - i 3)) == --3.72454...", __real__ result,
-	 -3.7245455049153225654L);
+    check_eps ("real(ccosh(-2 - i 3)) == -3.72454...", __real__ result,
+	     -3.7245455049153225654L, CHOOSE(7e-19L, 0, 3e-7));
   check_eps ("imag(ccosh(-2 - i 3)) == -0.51182...", __imag__ result,
-	     0.5118225699873846088L, CHOOSE(6e-20, 2e-16, 6e-8));
+	     0.5118225699873846088L, CHOOSE(3e-19L, 2e-16, 6e-8));
 }
 
 
@@ -3553,10 +3553,10 @@ cacos_test (void)
 	     -1.0927647857577371459L, CHOOSE(4e-17L, 0, 3e-7));
 
   result = FUNC(cacos) (BUILD_COMPLEX (-2, -3));
-  check ("real(cacos(-2 - i 3)) == -2.14144...", __real__ result,
-	 2.1414491111159960199L);
+  check_eps ("real(cacos(-2 - i 3)) == 2.14144...", __real__ result,
+	     2.1414491111159960199L, CHOOSE(3e-19L, 0, 0));
   check_eps ("imag(cacos(-2 - i 3)) == -1.98338...", __imag__ result,
-	     1.9833870299165354323L, CHOOSE(2e-19L, 0, 0));
+	     1.9833870299165354323L, CHOOSE(3e-19L, 0, 0));
 }
 
 
@@ -3694,9 +3694,9 @@ cacosh_test (void)
 
   result = FUNC(cacosh) (BUILD_COMPLEX (-2, -3));
   check_eps ("real(cacosh(-2 - i 3)) == -1.98338...", __real__ result,
-	     -1.9833870299165354323L, CHOOSE (6e-19, 3e-16, 9e-7));
+	     -1.9833870299165354323L, CHOOSE (2e-18L, 3e-16, 9e-7));
   check_eps ("imag(cacosh(-2 - i 3)) == 2.14144...", __imag__ result,
-	     2.1414491111159960199L, CHOOSE (3e-19, 5e-16, 0));
+	     2.1414491111159960199L, CHOOSE (3e-19, 5e-16, 1e-6));
 }
 
 
@@ -3838,10 +3838,10 @@ casin_test (void)
 	     1.0927647857577371459L, CHOOSE(4e-17L, 0, 3e-7));
 
   result = FUNC(casin) (BUILD_COMPLEX (-2, -3));
-  check ("real(casin(-2 - i 3)) == --0.57065...", __real__ result,
-	 -0.5706527843210994007L);
+  check_eps ("real(casin(-2 - i 3)) == -0.57065...", __real__ result,
+	     -0.5706527843210994007L, CHOOSE(4e-19L, 0, 0));
   check_eps ("imag(casin(-2 - i 3)) == -1.98338...", __imag__ result,
-	     -1.9833870299165354323L, CHOOSE(2e-19L, 0, 0));
+	     -1.9833870299165354323L, CHOOSE(3e-19L, 0, 0));
 }
 
 
@@ -3980,10 +3980,10 @@ casinh_test (void)
   check_eps ("real(casinh(0.7 + i 1.2)) == 0.97865...", __real__ result,
 	     0.9786545955936738768L, CHOOSE(5e-17L, 2e-16, 0));
   check_eps ("imag(casinh(0.7 + i 1.2)) == 0.91135...", __imag__ result,
-	     0.9113541895315601156L, CHOOSE(7e-19L, 0, 6e-8));
+	     0.9113541895315601156L, CHOOSE(7e-19L, 2e-16, 6e-8));
 
   result = FUNC(casinh) (BUILD_COMPLEX (-2, -3));
-  check_eps ("real(casinh(-2 - i 3)) == --1.96863...", __real__ result,
+  check_eps ("real(casinh(-2 - i 3)) == -1.96863...", __real__ result,
 	     -1.9686379257930962917L, CHOOSE(7e-19L, 2e-15, 2e-7));
   check_eps ("imag(casinh(-2 - i 3)) == -0.96465...", __imag__ result,
 	     -0.9646585044076027920L, CHOOSE(4e-19L, 2e-15, 4e-7));
@@ -4136,7 +4136,7 @@ catan_test (void)
   check ("real(catan(-2 - i 3)) == -1.40992...", __real__ result,
 	 -1.4099210495965755225L);
   check_eps ("imag(catan(-2 - i 3)) == -0.22907...", __imag__ result,
-	     -0.2290726829685387662L, CHOOSE(1e-19L, 3e-17, 2e-8));
+	     -0.2290726829685387662L, CHOOSE(1.1e-19L, 3e-17, 2e-8));
 }
 
 
@@ -4284,9 +4284,9 @@ catanh_test (void)
 
   result = FUNC(catanh) (BUILD_COMPLEX (-2, -3));
   check_eps ("real(catanh(-2 - i 3)) == -0.14694...", __real__ result,
-	     -0.1469466662255297520L, CHOOSE (3e-20, 6e-17, 2e-8));
-  check ("imag(catanh(-2 - i 3)) == -1.33897...", __imag__ result,
-	 -1.3389725222944935611L);
+	     -0.1469466662255297520L, CHOOSE (9e-20L, 6e-17, 2e-8));
+  check_eps ("imag(catanh(-2 - i 3)) == -1.33897...", __imag__ result,
+	     -1.3389725222944935611L, CHOOSE (7e-19L, 0, 0));
 }
 
 
@@ -4586,10 +4586,10 @@ ctanh_test (void)
 	     0.4778641038326365540L, CHOOSE(9e-17L, 6e-17, 0));
 
   result = FUNC(ctanh) (BUILD_COMPLEX (-2, -3));
-  check_eps ("real(ctanh(-2 - i 3)) == --0.96538...", __real__ result,
+  check_eps ("real(ctanh(-2 - i 3)) == -0.96538...", __real__ result,
 	     -0.9653858790221331242L, CHOOSE(2e-19L, 0, 0));
-  check_eps ("imag(ctanh(-2 - i 3)) == -0.00988...", __imag__ result,
-	     0.0098843750383224937L, CHOOSE(2e-20L, 0, 1e-9));
+  check_eps ("imag(ctanh(-2 - i 3)) == 0.00988...", __imag__ result,
+	     0.0098843750383224937L, CHOOSE(7e-20L, 0, 1e-9));
 }
 
 
@@ -4752,10 +4752,10 @@ clog_test (void)
 	     1.0427218783685369524L, CHOOSE(2e-17L, 0, 0));
 
   result = FUNC(clog) (BUILD_COMPLEX (-2, -3));
-  check ("real(clog(-2 - i 3)) == -1.28247...", __real__ result,
-	 1.2824746787307683680L);
+  check_eps ("real(clog(-2 - i 3)) == 1.28247...", __real__ result,
+	     1.2824746787307683680L, CHOOSE(3e-19L, 0, 0));
   check_eps ("imag(clog(-2 - i 3)) == -2.15879...", __imag__ result,
-	     -2.1587989303424641704L, CHOOSE(3e-19L, 0, 0));
+	     -2.1587989303424641704L, CHOOSE(2e-18L, 0, 0));
 }
 
 
@@ -4934,10 +4934,10 @@ clog10_test (void)
 	     0.4528483579352493248L, CHOOSE(6e-18, 6e-17, 3e-8));
 
   result = FUNC(clog10) (BUILD_COMPLEX (-2, -3));
-  check ("real(clog10(-2 - i 3)) == -0.55697...", __real__ result,
-	 0.5569716761534183846L);
+  check_eps ("real(clog10(-2 - i 3)) == 0.55697...", __real__ result,
+	     0.5569716761534183846L, CHOOSE(6e-20L, 0, 0));
   check_eps ("imag(clog10(-2 - i 3)) == -0.93755...", __imag__ result,
-	     -0.9375544629863747085L, CHOOSE (6e-20, 2e-16, 0));
+	     -0.9375544629863747085L, CHOOSE (7e-19L, 2e-16, 0));
 }
 
 
@@ -5102,8 +5102,8 @@ csqrt_test (void)
   result = FUNC(csqrt) (BUILD_COMPLEX (-2, -3));
   check_eps ("real(csqrt(-2 - i 3)) == -0.89597...", __real__ result,
 	     0.8959774761298381247L, CHOOSE(6e-20L, 2e-16, 6e-8));
-  check ("imag(csqrt(-2 - i 3)) == -1.67414...", __imag__ result,
-	 -1.6741492280355400404L);
+  check_eps ("imag(csqrt(-2 - i 3)) == -1.67414...", __imag__ result,
+	     -1.6741492280355400404L, CHOOSE(0, 5e-16, 0));
 }
 
 
@@ -5641,7 +5641,7 @@ identities (void)
   identities1_test (-1, CHOOSE (1e-18L, 0, 1e-7));
 
   identities2_test (0.2L, CHOOSE (1e-19L, 1e-16, 0));
-  identities2_test (0.9L, CHOOSE (0, 1e-15, 2e-7));
+  identities2_test (0.9L, CHOOSE (3e-19L, 1e-15, 2e-7));
   identities2_test (0, 0);
   identities2_test (-1, CHOOSE (1e-18L, 1e-15, 2e-7));
 
diff --git a/math/test-fenv.c b/math/test-fenv.c
index 4da2e37dae..ab09410690 100644
--- a/math/test-fenv.c
+++ b/math/test-fenv.c
@@ -36,6 +36,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/wait.h>
+#include <sys/resource.h>
 
 /*
   Since not all architectures might define all exceptions, we define
@@ -249,6 +250,14 @@ feenv_nomask_test (const char *flag_name, int fe_exc)
   pid = fork  ();
   if (pid == 0)
     {
+#ifdef RLIMIT_CORE
+      /* Try to avoid dumping core.  */
+      struct rlimit core_limit;
+      core_limit.rlim_cur = 0;
+      core_limit.rlim_max = 0;
+      setrlimit (RLIMIT_CORE, &core_limit);
+#endif
+
       fesetenv (FE_NOMASK_ENV);
       feraiseexcept (fe_exc);
       exit (2);
@@ -293,6 +302,14 @@ feenv_mask_test (const char *flag_name, int fe_exc)
   pid = fork ();
   if (pid == 0)
     {
+#ifdef RLIMIT_CORE
+      /* Try to avoid dumping core.  */
+      struct rlimit core_limit;
+      core_limit.rlim_cur = 0;
+      core_limit.rlim_max = 0;
+      setrlimit (RLIMIT_CORE, &core_limit);
+#endif
+
       fesetenv (FE_DFL_ENV);
       feraiseexcept (fe_exc);
       exit (2);