This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Move TEST_f_f tests for [a-c]* functions from libm-test.inc to auto-libm-test-in


This patch starts converting tests in libm-test.inc (of functions with
finite inputs, finite though possibly overflowing or underflowing
expected results for those inputs, and results that effectively need
tools such as MPFR to be used to compute them for general inputs) to
using expected results generated by gen-auto-libm-tests.c.

The patch teaches gen-auto-libm-tests.c about computing all relevant
functions with a single real input and output (other such functions
either have no need of MPFR, or while it could usefully be used,
e.g. for rint, to generate the results for different rounding modes
and avoid all the present source code conditionals on various tests,
will need more substantial new features before gen-auto-libm-tests.c
can be used for them).  It adds knowledge of what I think are all the
special constants such as pi/2 used in test inputs for those
functions.  And it converts an initial subset of such functions [a-c]*
to actually have the relevant tests in auto-libm-tests-in.  The intent
is for subsequent patches to deal with subsequent batches of such
functions, before going on to functions testing with something other
than TEST_f_f.

Tested x86_64 and x86 and ulps updated accordingly.  (This is the
start of converting tests where ulps updates are needed - some may be
for cases where the relevant ulps are already there, but under a
different name because all inputs now appear in test names in hex
float format.  The obsolete ulps for the old names can disappear the
next time ulps are regenerated from scratch; they don't need removing
now.)

Large diffs for auto-libm-test-out omitted below.  (I expect that file
to end up the largest in the source tree because of its inclusion of
exact expected results for each floating-point format and rounding
mode; libm-test.inc is in the top ten largest files, the others all
being character set data or ChangeLog.  I don't think this is a
problem, but if problems do arise with its size - or with the size of
the actual compiled libm tests once all functions get more
systematically tested in all rounding modes - we can always reconsider
splitting up this file, the tests as they are run from the makefile,
or both.)

2013-11-30  Joseph Myers  <joseph@codesourcery.com>

	* math/gen-auto-libm-tests.c (test_functions): Add more
	single-argument functions.
	(special_fill_pi_2): New function.
	(special_fill_minus_pi_2): Likewise.
	(special_fill_pi_6): Likewise.
	(special_fill_minus_pi_6): Likewise.
	(special_fill_pi_3): Likewise.
	(special_fill_2pi_3): Likewise.
	(special_fill_e): Likewise.
	(special_fill_1_e): Likewise.
	(special_fill_e_minus_1): Likewise.
	(special_real_inputs): Add more special inputs.
	(output_for_one_input_case): Do not require ERANGE on underflow to
	zero if round-to-nearest result does not underflow to zero, unless
	exact results required.
	* math/auto-libm-test-in: Add tests of acos, acosh, asin, asinh,
	atan, atanh, cbrt, cos and cosh.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (acos_test_data): Use AUTO_TESTS_f_f.
	(acos_tonearest_test_data): Likewise.
	(acos_towardzero_test_data): Likewise.
	(acos_downward_test_data): Likewise.
	(acos_upward_test_data): Likewise.
	(acosh_test_data): Likewise.
	(asin_test_data): Likewise.
	(asin_tonearest_test_data): Likewise.
	(asin_towardzero_test_data): Likewise.
	(asin_upward_test_data): Likewise.
	(asinh_test_data): Likewise.
	(atan_test_data): Likewise.
	(atanh_test_data): Likewise.
	(cbrt_test_data): Likewise.
	(cos_test_data): Likewise.
	(cos_tonearest_test_data): Likewise.
	(cos_towardzero_test_data): Likewise.
	(cos_downward_test_data): Likewise.
	(cos_upward_test_data): Likewise.
	(cosh_test_data): Likewise.
	(cosh_tonearest_test_data): Likewise.
	(cosh_towardzero_test_data): Likewise.
	(cosh_downward_test_data): Likewise.
	(cosh_upward_test_data): Likewise.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 12cb27d..7eac25f 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -16,6 +16,117 @@
 # License along with the GNU C Library; if not, see
 # <http://www.gnu.org/licenses/>.  */
 
+acos 0
+acos -0
+acos 1
+acos -1
+acos 0.5
+acos -0.5
+acos 0.75
+acos 2e-17
+acos 0.0625
+acos 0x0.ffffffp0
+acos -0x0.ffffffp0
+acos 0x0.ffffffff8p0
+acos -0x0.ffffffff8p0
+acos 0x0.ffffffffffffp0
+acos -0x0.ffffffffffffp0
+acos 0x0.ffffffffffffffffp0
+acos -0x0.ffffffffffffffffp0
+
+acosh 1
+acosh 7
+
+asin 0
+asin -0
+asin 0.5
+asin -0.5
+asin 1.0
+asin -1.0
+asin 0.75
+asin 0x0.ffffffp0
+asin -0x0.ffffffp0
+asin 0x0.ffffffff8p0
+asin -0x0.ffffffff8p0
+asin 0x0.ffffffffffffp0
+asin -0x0.ffffffffffffp0
+asin 0x0.ffffffffffffffffp0
+asin -0x0.ffffffffffffffffp0
+
+asinh 0
+asinh -0
+asinh 0.75
+
+atan 0
+atan -0
+atan max
+atan -max
+atan 1
+atan -1
+atan 0.75
+# Bug 15319: underflow exception may be missing.
+atan 0x1p-100 missing-underflow
+atan 0x1p-600 missing-underflow
+atan 0x1p-10000 missing-underflow
+
+atanh 0
+atanh -0
+atanh 0.75
+
+cbrt 0.0
+cbrt -0
+cbrt -0.001
+cbrt 8
+cbrt -27.0
+cbrt 0.9921875
+cbrt 0.75
+cbrt 0x1p16383
+cbrt 0x1p-16383
+
+cos 0
+cos -0
+cos pi/3
+cos 2pi/3
+cos pi/2
+cos 0.75
+cos 0x1p65
+cos -0x1p65
+cos 0.80190127184058835
+cos 0x1.442f74p+15
+cos 1e22
+cos 0x1p1023
+cos 0x1p16383
+cos 0x1p+120
+cos 0x1p+127
+cos 0x1.fffff8p+127
+cos 0x1.fffffep+127
+cos 0x1p+50
+cos 0x1p+28
+cos 0x1.000000cf4a2a2p0
+cos 0x1.0000010b239a9p0
+cos 0x1.00000162a932bp0
+cos 0x1.000002d452a10p0
+cos 0x1.000005bc7d86dp0
+cos 1
+cos 2
+cos 3
+cos 4
+cos 5
+cos 6
+cos 7
+cos 8
+cos 9
+cos 10
+
+cosh 0
+cosh -0
+cosh 0.75
+cosh 709.8893558127259666434838436543941497802734375
+cosh -709.8893558127259666434838436543941497802734375
+cosh 22
+cosh 23
+cosh 24
+
 sqrt 0
 sqrt -0
 sqrt 2209
diff --git a/math/gen-auto-libm-tests.c b/math/gen-auto-libm-tests.c
index 57053ad..2b8d766 100644
--- a/math/gen-auto-libm-tests.c
+++ b/math/gen-auto-libm-tests.c
@@ -439,7 +439,35 @@ typedef struct
 /* List of functions handled by this program.  */
 static test_function test_functions[] =
   {
+    FUNC_mpfr_f_f ("acos", mpfr_acos, false),
+    FUNC_mpfr_f_f ("acosh", mpfr_acosh, false),
+    FUNC_mpfr_f_f ("asin", mpfr_asin, false),
+    FUNC_mpfr_f_f ("asinh", mpfr_asinh, false),
+    FUNC_mpfr_f_f ("atan", mpfr_atan, false),
+    FUNC_mpfr_f_f ("atanh", mpfr_atanh, false),
+    FUNC_mpfr_f_f ("cbrt", mpfr_cbrt, false),
+    FUNC_mpfr_f_f ("cos", mpfr_cos, false),
+    FUNC_mpfr_f_f ("cosh", mpfr_cosh, false),
+    FUNC_mpfr_f_f ("erf", mpfr_erf, false),
+    FUNC_mpfr_f_f ("erfc", mpfr_erfc, false),
+    FUNC_mpfr_f_f ("exp", mpfr_exp, false),
+    FUNC_mpfr_f_f ("exp10", mpfr_exp10, false),
+    FUNC_mpfr_f_f ("exp2", mpfr_exp2, false),
+    FUNC_mpfr_f_f ("expm1", mpfr_expm1, false),
+    FUNC_mpfr_f_f ("j0", mpfr_j0, false),
+    FUNC_mpfr_f_f ("j1", mpfr_j1, false),
+    FUNC_mpfr_f_f ("log", mpfr_log, false),
+    FUNC_mpfr_f_f ("log10", mpfr_log10, false),
+    FUNC_mpfr_f_f ("log1p", mpfr_log1p, false),
+    FUNC_mpfr_f_f ("log2", mpfr_log2, false),
+    FUNC_mpfr_f_f ("sin", mpfr_sin, false),
+    FUNC_mpfr_f_f ("sinh", mpfr_sinh, false),
     FUNC_mpfr_f_f ("sqrt", mpfr_sqrt, true),
+    FUNC_mpfr_f_f ("tan", mpfr_tan, false),
+    FUNC_mpfr_f_f ("tanh", mpfr_tanh, false),
+    FUNC_mpfr_f_f ("tgamma", mpfr_gamma, false),
+    FUNC_mpfr_f_f ("y0", mpfr_y0, false),
+    FUNC_mpfr_f_f ("y1", mpfr_y1, false),
   };
 
 /* Allocate memory, with error checking.  */
@@ -637,6 +665,116 @@ special_fill_minus_pi (mpfr_t res0, mpfr_t res1, fp_format format)
   return 2;
 }
 
+static size_t
+special_fill_pi_2 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  mpfr_const_pi (res0, MPFR_RNDU);
+  assert_exact (mpfr_div_ui (res0, res0, 2, MPFR_RNDN));
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  mpfr_const_pi (res1, MPFR_RNDD);
+  assert_exact (mpfr_div_ui (res1, res1, 2, MPFR_RNDN));
+  return 2;
+}
+
+static size_t
+special_fill_minus_pi_2 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  mpfr_const_pi (res0, MPFR_RNDU);
+  assert_exact (mpfr_div_ui (res0, res0, 2, MPFR_RNDN));
+  assert_exact (mpfr_neg (res0, res0, MPFR_RNDN));
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  mpfr_const_pi (res1, MPFR_RNDD);
+  assert_exact (mpfr_div_ui (res1, res1, 2, MPFR_RNDN));
+  assert_exact (mpfr_neg (res1, res1, MPFR_RNDN));
+  return 2;
+}
+
+static size_t
+special_fill_pi_6 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res0, 1, -1, MPFR_RNDN));
+  mpfr_asin (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res1, 1, -1, MPFR_RNDN));
+  mpfr_asin (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
+static size_t
+special_fill_minus_pi_6 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res0, -1, -1, MPFR_RNDN));
+  mpfr_asin (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res1, -1, -1, MPFR_RNDN));
+  mpfr_asin (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
+static size_t
+special_fill_pi_3 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res0, 1, -1, MPFR_RNDN));
+  mpfr_acos (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res1, 1, -1, MPFR_RNDN));
+  mpfr_acos (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
+static size_t
+special_fill_2pi_3 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res0, -1, -1, MPFR_RNDN));
+  mpfr_acos (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si_2exp (res1, -1, -1, MPFR_RNDN));
+  mpfr_acos (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
+static size_t
+special_fill_e (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si (res0, 1, MPFR_RNDN));
+  mpfr_exp (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si (res1, 1, MPFR_RNDN));
+  mpfr_exp (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
+static size_t
+special_fill_1_e (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si (res0, -1, MPFR_RNDN));
+  mpfr_exp (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si (res1, -1, MPFR_RNDN));
+  mpfr_exp (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
+static size_t
+special_fill_e_minus_1 (mpfr_t res0, mpfr_t res1, fp_format format)
+{
+  mpfr_init2 (res0, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si (res0, 1, MPFR_RNDN));
+  mpfr_expm1 (res0, res0, MPFR_RNDU);
+  mpfr_init2 (res1, fp_formats[format].mant_dig);
+  assert_exact (mpfr_set_si (res1, 1, MPFR_RNDN));
+  mpfr_expm1 (res1, res1, MPFR_RNDD);
+  return 2;
+}
+
 /* A special string accepted in input arguments.  */
 typedef struct
 {
@@ -656,6 +794,15 @@ static const special_real_input special_real_inputs[] =
     { "-max", special_fill_minus_max },
     { "pi", special_fill_pi },
     { "-pi", special_fill_minus_pi },
+    { "pi/2", special_fill_pi_2 },
+    { "-pi/2", special_fill_minus_pi_2 },
+    { "pi/6", special_fill_pi_6 },
+    { "-pi/6", special_fill_minus_pi_6 },
+    { "pi/3", special_fill_pi_3 },
+    { "2pi/3", special_fill_2pi_3 },
+    { "e", special_fill_e },
+    { "1/e", special_fill_1_e },
+    { "e-1", special_fill_e_minus_1 },
   };
 
 /* Given a real number R computed in round-to-zero mode, set the
@@ -1405,6 +1552,8 @@ output_for_one_input_case (FILE *fp, const char *filename, test_function *tf,
 				  & (1U << exc_overflow)) != 0)
 			    must_erange = true;
 			  if (mpfr_zero_p (all_res[i][m])
+			      && (tf->exact
+				  || mpfr_zero_p (all_res[i][rm_tonearest]))
 			      && (all_exc_before[i][m]
 				  & (1U << exc_underflow)) != 0)
 			    must_erange = true;
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 6e9d37a..f321f6d 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -1648,27 +1648,7 @@ static const struct test_f_f_data acos_test_data[] =
     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
-    TEST_f_f (acos, 0, M_PI_2l),
-    TEST_f_f (acos, minus_zero, M_PI_2l),
-    TEST_f_f (acos, 1, 0),
-    TEST_f_f (acos, -1, M_PIl),
-    TEST_f_f (acos, 0.5, M_PI_6l*2.0),
-    TEST_f_f (acos, -0.5, M_PI_6l*4.0),
-    TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
-    TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
-    TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
-    TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
-    TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
-#ifndef TEST_FLOAT
-    TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
-    TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
-    TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
-    TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
-#endif
-#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
-    TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
-    TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
-#endif
+    AUTO_TESTS_f_f (acos, tonearest),
   };
 
 static void
@@ -1682,12 +1662,7 @@ acos_test (void)
 
 static const struct test_f_f_data acos_tonearest_test_data[] =
   {
-    TEST_f_f (acos, 0, M_PI_2l),
-    TEST_f_f (acos, minus_zero, M_PI_2l),
-    TEST_f_f (acos, 1, 0),
-    TEST_f_f (acos, -1, M_PIl),
-    TEST_f_f (acos, 0.5, M_PI_6l*2.0),
-    TEST_f_f (acos, -0.5, M_PI_6l*4.0),
+    AUTO_TESTS_f_f (acos, tonearest),
   };
 
 static void
@@ -1701,12 +1676,7 @@ acos_test_tonearest (void)
 
 static const struct test_f_f_data acos_towardzero_test_data[] =
   {
-    TEST_f_f (acos, 0, M_PI_2l),
-    TEST_f_f (acos, minus_zero, M_PI_2l),
-    TEST_f_f (acos, 1, 0),
-    TEST_f_f (acos, -1, M_PIl),
-    TEST_f_f (acos, 0.5, M_PI_6l*2.0),
-    TEST_f_f (acos, -0.5, M_PI_6l*4.0),
+    AUTO_TESTS_f_f (acos, towardzero),
   };
 
 static void
@@ -1720,12 +1690,7 @@ acos_test_towardzero (void)
 
 static const struct test_f_f_data acos_downward_test_data[] =
   {
-    TEST_f_f (acos, 0, M_PI_2l),
-    TEST_f_f (acos, minus_zero, M_PI_2l),
-    TEST_f_f (acos, 1, 0),
-    TEST_f_f (acos, -1, M_PIl),
-    TEST_f_f (acos, 0.5, M_PI_6l*2.0),
-    TEST_f_f (acos, -0.5, M_PI_6l*4.0),
+    AUTO_TESTS_f_f (acos, downward),
   };
 
 static void
@@ -1739,12 +1704,7 @@ acos_test_downward (void)
 
 static const struct test_f_f_data acos_upward_test_data[] =
   {
-    TEST_f_f (acos, 0, M_PI_2l),
-    TEST_f_f (acos, minus_zero, M_PI_2l),
-    TEST_f_f (acos, 1, 0),
-    TEST_f_f (acos, -1, M_PIl),
-    TEST_f_f (acos, 0.5, M_PI_6l*2.0),
-    TEST_f_f (acos, -0.5, M_PI_6l*4.0),
+    AUTO_TESTS_f_f (acos, upward),
   };
 
 static void
@@ -1765,8 +1725,7 @@ static const struct test_f_f_data acosh_test_data[] =
     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
-    TEST_f_f (acosh, 1, 0),
-    TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
+    AUTO_TESTS_f_f (acosh, tonearest),
   };
 
 static void
@@ -1789,25 +1748,7 @@ static const struct test_f_f_data asin_test_data[] =
     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
-    TEST_f_f (asin, 0, 0),
-    TEST_f_f (asin, minus_zero, minus_zero),
-    TEST_f_f (asin, 0.5, M_PI_6l),
-    TEST_f_f (asin, -0.5, -M_PI_6l),
-    TEST_f_f (asin, 1.0, M_PI_2l),
-    TEST_f_f (asin, -1.0, -M_PI_2l),
-    TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
-    TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
-    TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
-#ifndef TEST_FLOAT
-    TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
-    TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
-    TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
-    TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
-#endif
-#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
-    TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
-    TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
-#endif
+    AUTO_TESTS_f_f (asin, tonearest),
   };
 
 static void
@@ -1821,12 +1762,7 @@ asin_test (void)
 
 static const struct test_f_f_data asin_tonearest_test_data[] =
   {
-    TEST_f_f (asin, 0, 0),
-    TEST_f_f (asin, minus_zero, minus_zero),
-    TEST_f_f (asin, 0.5, M_PI_6l),
-    TEST_f_f (asin, -0.5, -M_PI_6l),
-    TEST_f_f (asin, 1.0, M_PI_2l),
-    TEST_f_f (asin, -1.0, -M_PI_2l),
+    AUTO_TESTS_f_f (asin, tonearest),
   };
 
 static void
@@ -1840,12 +1776,7 @@ asin_test_tonearest (void)
 
 static const struct test_f_f_data asin_towardzero_test_data[] =
   {
-    TEST_f_f (asin, 0, 0),
-    TEST_f_f (asin, minus_zero, minus_zero),
-    TEST_f_f (asin, 0.5, M_PI_6l),
-    TEST_f_f (asin, -0.5, -M_PI_6l),
-    TEST_f_f (asin, 1.0, M_PI_2l),
-    TEST_f_f (asin, -1.0, -M_PI_2l),
+    AUTO_TESTS_f_f (asin, towardzero),
   };
 
 static void
@@ -1859,12 +1790,7 @@ asin_test_towardzero (void)
 
 static const struct test_f_f_data asin_downward_test_data[] =
   {
-    TEST_f_f (asin, 0, 0),
-    TEST_f_f (asin, minus_zero, minus_zero),
-    TEST_f_f (asin, 0.5, M_PI_6l),
-    TEST_f_f (asin, -0.5, -M_PI_6l),
-    TEST_f_f (asin, 1.0, M_PI_2l),
-    TEST_f_f (asin, -1.0, -M_PI_2l),
+    AUTO_TESTS_f_f (asin, downward),
   };
 
 static void
@@ -1878,12 +1804,7 @@ asin_test_downward (void)
 
 static const struct test_f_f_data asin_upward_test_data[] =
   {
-    TEST_f_f (asin, 0, 0),
-    TEST_f_f (asin, minus_zero, minus_zero),
-    TEST_f_f (asin, 0.5, M_PI_6l),
-    TEST_f_f (asin, -0.5, -M_PI_6l),
-    TEST_f_f (asin, 1.0, M_PI_2l),
-    TEST_f_f (asin, -1.0, -M_PI_2l),
+    AUTO_TESTS_f_f (asin, upward),
   };
 
 static void
@@ -1896,12 +1817,10 @@ asin_test_upward (void)
 
 static const struct test_f_f_data asinh_test_data[] =
   {
-    TEST_f_f (asinh, 0, 0),
-    TEST_f_f (asinh, minus_zero, minus_zero),
     TEST_f_f (asinh, plus_infty, plus_infty, NO_TEST_INLINE),
     TEST_f_f (asinh, minus_infty, minus_infty, NO_TEST_INLINE),
     TEST_f_f (asinh, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
-    TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
+    AUTO_TESTS_f_f (asinh, tonearest),
   };
 
 static void
@@ -1914,27 +1833,11 @@ asinh_test (void)
 
 static const struct test_f_f_data atan_test_data[] =
   {
-    TEST_f_f (atan, 0, 0),
-    TEST_f_f (atan, minus_zero, minus_zero),
-
     TEST_f_f (atan, plus_infty, M_PI_2l),
     TEST_f_f (atan, minus_infty, -M_PI_2l),
     TEST_f_f (atan, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
-    TEST_f_f (atan, max_value, M_PI_2l),
-    TEST_f_f (atan, -max_value, -M_PI_2l),
-
-    TEST_f_f (atan, 1, M_PI_4l),
-    TEST_f_f (atan, -1, -M_PI_4l),
 
-    TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
-
-    TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
-#ifndef TEST_FLOAT
-    TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
-#endif
-#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
-    TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
-#endif
+    AUTO_TESTS_f_f (atan, tonearest),
   };
 
 static void
@@ -1949,9 +1852,6 @@ atan_test (void)
 
 static const struct test_f_f_data atanh_test_data[] =
   {
-    TEST_f_f (atanh, 0, 0),
-    TEST_f_f (atanh, minus_zero, minus_zero),
-
     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
     TEST_f_f (atanh, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
@@ -1962,7 +1862,7 @@ static const struct test_f_f_data atanh_test_data[] =
     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
-    TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
+    AUTO_TESTS_f_f (atanh, tonearest),
   };
 
 static void
@@ -5955,23 +5855,11 @@ catanh_test (void)
 
 static const struct test_f_f_data cbrt_test_data[] =
   {
-    TEST_f_f (cbrt, 0.0, 0.0),
-    TEST_f_f (cbrt, minus_zero, minus_zero),
-
     TEST_f_f (cbrt, plus_infty, plus_infty),
     TEST_f_f (cbrt, minus_infty, minus_infty),
     TEST_f_f (cbrt, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
 
-    TEST_f_f (cbrt, -0.001L, -0.1L),
-    TEST_f_f (cbrt, 8, 2),
-    TEST_f_f (cbrt, -27.0, -3.0),
-    TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
-    TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
-
-#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
-    TEST_f_f (cbrt, 0x1p16383L, 0x1p5461L),
-    TEST_f_f (cbrt, 0x1p-16383L, 0x1p-5461L),
-#endif
+    AUTO_TESTS_f_f (cbrt, tonearest),
   };
 
 static void
@@ -6902,74 +6790,11 @@ copysign_test (void)
 
 static const struct test_f_f_data cos_test_data[] =
   {
-    TEST_f_f (cos, 0, 1),
-    TEST_f_f (cos, minus_zero, 1),
     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (cos, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 
-    TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
-    TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
-
-    /* The value of M_PI_2l is never exactly PI/2, and therefore the
-       answer is never exactly zero. The answer is equal to the error
-       in rounding PI/2 for the type used.  Thus the answer is unique
-       to each type.  */
-#ifdef TEST_FLOAT
-    /* 32-bit float.  */
-    TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
-#endif
-#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
-    /* 64-bit double or 64-bit long double.  */
-    TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
-#endif
-#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
-    /* 96-bit long double.  */
-    TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
-#endif
-#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
-    /* 128-bit IBM long double.  */
-    TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
-#endif
-#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
-    /* 128-bit long double.  */
-    TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
-#endif
-
-    TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
-
-    TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
-    TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
-
-#ifdef TEST_DOUBLE
-    TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
-#endif
-
-    TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
-
-#ifndef TEST_FLOAT
-    TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
-    TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
-#endif
-
-#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
-    TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
-#endif
-
-    TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
-    TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
-    TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
-    TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
-    TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
-    TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
-
-#ifdef TEST_DOUBLE
-    TEST_f_f (cos, 0x1.000000cf4a2a2p0, 0x1.14a27f9e7521ep-1);
-    TEST_f_f (cos, 0x1.0000010b239a9p0, 0x1.14a27f39bc09dp-1);
-    TEST_f_f (cos, 0x1.00000162a932bp0, 0x1.14a27ea670b8cp-1);
-    TEST_f_f (cos, 0x1.000002d452a10p0, 0x1.14a27c385222ep-1);
-    TEST_f_f (cos, 0x1.000005bc7d86dp0, 0x1.14a27753ee07ap-1);
-#endif
+    AUTO_TESTS_f_f (cos, tonearest),
   };
 
 static void
@@ -6983,16 +6808,7 @@ cos_test (void)
 
 static const struct test_f_f_data cos_tonearest_test_data[] =
   {
-    TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
-    TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
-    TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
-    TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
-    TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
-    TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
-    TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
-    TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
-    TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
-    TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
+    AUTO_TESTS_f_f (cos, tonearest),
   };
 
 static void
@@ -7006,16 +6822,7 @@ cos_test_tonearest (void)
 
 static const struct test_f_f_data cos_towardzero_test_data[] =
   {
-    TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
-    TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
-    TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
-    TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
-    TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
-    TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
-    TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
-    TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
-    TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
-    TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
+    AUTO_TESTS_f_f (cos, towardzero),
   };
 
 static void
@@ -7029,16 +6836,7 @@ cos_test_towardzero (void)
 
 static const struct test_f_f_data cos_downward_test_data[] =
   {
-    TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
-    TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
-    TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
-    TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
-    TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
-    TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
-    TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
-    TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
-    TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
-    TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
+    AUTO_TESTS_f_f (cos, downward),
   };
 
 static void
@@ -7052,16 +6850,7 @@ cos_test_downward (void)
 
 static const struct test_f_f_data cos_upward_test_data[] =
   {
-    TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
-    TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
-    TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
-    TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
-    TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
-    TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
-    TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
-    TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
-    TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
-    TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
+    AUTO_TESTS_f_f (cos, upward),
   };
 
 static void
@@ -7075,19 +6864,11 @@ cos_test_upward (void)
 
 static const struct test_f_f_data cosh_test_data[] =
   {
-    TEST_f_f (cosh, 0, 1),
-    TEST_f_f (cosh, minus_zero, 1),
-
     TEST_f_f (cosh, plus_infty, plus_infty, NO_TEST_INLINE),
     TEST_f_f (cosh, minus_infty, plus_infty, NO_TEST_INLINE),
     TEST_f_f (cosh, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
 
-    TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
-
-#ifndef TEST_FLOAT
-    TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
-    TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
-#endif
+    AUTO_TESTS_f_f (cosh, tonearest),
   };
 
 static void
@@ -7101,9 +6882,7 @@ cosh_test (void)
 
 static const struct test_f_f_data cosh_tonearest_test_data[] =
   {
-    TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
-    TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
-    TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
+    AUTO_TESTS_f_f (cosh, tonearest),
   };
 
 static void
@@ -7117,9 +6896,7 @@ cosh_test_tonearest (void)
 
 static const struct test_f_f_data cosh_towardzero_test_data[] =
   {
-    TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
-    TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
-    TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
+    AUTO_TESTS_f_f (cosh, towardzero),
   };
 
 static void
@@ -7133,9 +6910,7 @@ cosh_test_towardzero (void)
 
 static const struct test_f_f_data cosh_downward_test_data[] =
   {
-    TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
-    TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
-    TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
+    AUTO_TESTS_f_f (cosh, downward),
   };
 
 static void
@@ -7149,9 +6924,7 @@ cosh_test_downward (void)
 
 static const struct test_f_f_data cosh_upward_test_data[] =
   {
-    TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
-    TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
-    TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
+    AUTO_TESTS_f_f (cosh, upward),
   };
 
 static void
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 4759aa9..f2ae284 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -4,6 +4,9 @@
 Test "acos (0.75)":
 ildouble: 1
 ldouble: 1
+Test "acos (0xcp-4)":
+ildouble: 1
+ldouble: 1
 
 # acos_downward
 Test "acos_downward (-0)":
@@ -31,6 +34,26 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "acos_downward (0xf.fffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.fffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
+
+# acos_tonearest
+Test "acos_tonearest (0xcp-4)":
+ildouble: 1
+ldouble: 1
 
 # acos_towardzero
 Test "acos_towardzero (-0)":
@@ -58,6 +81,21 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "acos_towardzero (0xf.fffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.fffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
 
 # acos_upward
 Test "acos_upward (-0)":
@@ -75,8 +113,32 @@ idouble: 1
 Test "acos_upward (0.5)":
 ildouble: 1
 ldouble: 1
+Test "acos_upward (0xcp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_upward (0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
 
 # asin_downward
+Test "asin_downward (-0x8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
 Test "asin_downward (-1.0)":
 double: 1
 idouble: 1
@@ -119,11 +181,29 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "asin_upward (-0xf.fffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
 Test "asin_upward (-1.0)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "asin_upward (0x8p-4)":
+ildouble: 1
+ldouble: 1
 Test "asin_upward (1.0)":
 double: 1
 idouble: 1
@@ -132,6 +212,9 @@ idouble: 1
 Test "atanh (0.75)":
 ildouble: 2
 ldouble: 1
+Test "atanh (0xcp-4)":
+ildouble: 2
+ldouble: 1
 
 # cacos
 Test "Imaginary part of: cacos (+0 + 0.5 i)":
@@ -4100,12 +4183,30 @@ ildouble: 1
 ldouble: 1
 
 # cbrt
+Test "cbrt (-0x1.bp+4)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.189374bc6a7ecp-12)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.189374bc6a7ef9ep-12)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.189374bc6a7fp-12)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.18937p-12)":
+ildouble: 1
+ldouble: 1
 Test "cbrt (-27.0)":
 ildouble: 1
 ldouble: 1
 Test "cbrt (0.75)":
 ildouble: 1
 ldouble: 1
+Test "cbrt (0xcp-4)":
+ildouble: 1
+ldouble: 1
 
 # ccos
 Test "Real part of: ccos (-0.75 + 710.5 i)":
@@ -4758,6 +4859,9 @@ idouble: 1
 ifloat: 1
 
 # cos
+Test "cos (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
 Test "cos (M_PI_6l * 2.0)":
 double: 1
 idouble: 1
@@ -4768,6 +4872,151 @@ idouble: 2
 ifloat: 1
 
 # cos_downward
+Test "cos_downward (0x1.000000cf4a2a2p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.0000010b239a9p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.00000162a932bp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.000002d452a1p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.000002p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.0c152382d7365p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d18468p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d1846ap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d18p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d19p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb6p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1p+120)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1p+28)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a44p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6cap+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6cb08cp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6cb09p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6ccp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a48p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.1e19e0c9bab24p+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.1e19e4p+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.1e19ep+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x3p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p+48)":
+double: 1
+idouble: 1
+Test "cos_downward (0x8p+0)":
+ildouble: 2
+ldouble: 2
+Test "cos_downward (0x8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x9p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xa.217bap+12)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xap+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xc.d4966d92d1708p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xc.d4966d92d171p-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xc.d4966p-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xcp-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xf.ffffffffffff8p+1020)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xf.fffffp+124)":
+double: 1
+idouble: 1
 Test "cos_downward (1)":
 ildouble: 1
 ldouble: 1
@@ -4800,7 +5049,105 @@ Test "cos_downward (9)":
 float: 1
 ifloat: 1
 
+# cos_tonearest
+Test "cos_tonearest (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
+
 # cos_towardzero
+Test "cos_towardzero (0x1.000000cf4a2a2p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.0000010b239a9p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.00000162a932bp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.000002d452a1p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.000002p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.0c152382d7365p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.921fb54442d18p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.921fb54442d19p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1p+120)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.182a4705ae6ccp+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.182a48p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19e0c9bab24p+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19e4p+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19ep+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x4p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x4p+48)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x8p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x8p+1020)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xa.217bap+12)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0xc.d4966d92d1708p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0xc.d4966d92d171p-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xc.d4966p-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xcp-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xf.fffffp+124)":
+double: 1
+idouble: 1
 Test "cos_towardzero (1)":
 ildouble: 1
 ldouble: 1
@@ -4832,6 +5179,139 @@ ildouble: 1
 ldouble: 1
 
 # cos_upward
+Test "cos_upward (-0x2p+64)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.000004p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.000005bc7d86dp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.000006p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c1522p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c152382d7366p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c1524p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.921fb4p+0)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x1.921fb54442d18468p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb54442d1846ap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb54442d18p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb54442d19p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb6p+0)":
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x1p+120)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1p+28)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a44p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6cap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6cb08cp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6cb09p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6ccp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a48p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2p+64)":
+double: 1
+idouble: 1
+Test "cos_upward (0x3p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x4p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x5p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x6p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x7p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x8p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x8p+1020)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x8p+124)":
+double: 1
+idouble: 1
+Test "cos_upward (0x9p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0xa.217bap+12)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0xap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0xc.d4967p-4)":
+double: 1
+idouble: 1
+Test "cos_upward (0xf.ffffcp+124)":
+double: 1
+idouble: 1
+Test "cos_upward (0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
 Test "cos_upward (1)":
 float: 1
 ifloat: 1
@@ -4861,7 +5341,22 @@ Test "cos_upward (9)":
 ildouble: 1
 ldouble: 1
 
+# cosh
+Test "cosh (-0x2.c5e3acp+8)":
+ildouble: 1
+Test "cosh (-0x2.c5e3bp+8)":
+ildouble: 1
+Test "cosh (0x1.6p+4)":
+ldouble: 1
+
 # cosh_downward
+Test "cosh_downward (-0x2.c5e3acd2922a6p+8)":
+ildouble: 1
+Test "cosh_downward (-0x2.c5e3bp+8)":
+ildouble: 1
+Test "cosh_downward (0x1.6p+4)":
+ildouble: 1
+ldouble: 2
 Test "cosh_downward (22)":
 double: 1
 float: 1
@@ -4883,10 +5378,21 @@ ildouble: 1
 ldouble: 1
 
 # cosh_tonearest
+Test "cosh_tonearest (-0x2.c5e3acp+8)":
+ildouble: 1
+Test "cosh_tonearest (-0x2.c5e3bp+8)":
+ildouble: 1
+Test "cosh_tonearest (0x1.6p+4)":
+ldouble: 1
 Test "cosh_tonearest (22)":
 ldouble: 1
 
 # cosh_towardzero
+Test "cosh_towardzero (-0x2.c5e3acd2922a6p+8)":
+ildouble: 1
+Test "cosh_towardzero (0x1.6p+4)":
+ildouble: 1
+ldouble: 2
 Test "cosh_towardzero (22)":
 double: 1
 float: 1
@@ -4908,6 +5414,30 @@ ildouble: 1
 ldouble: 1
 
 # cosh_upward
+Test "cosh_upward (-0x2.c5e3acd2922a6p+8)":
+double: 1
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (-0x2.c5e3acp+8)":
+ildouble: 1
+Test "cosh_upward (-0x2.c5e3bp+8)":
+ildouble: 1
+Test "cosh_upward (0x1.6p+4)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (0x1.7p+4)":
+ildouble: 2
+ldouble: 1
+Test "cosh_upward (0x1.8p+4)":
+ildouble: 1
+Test "cosh_upward (0x2.c5e3acd2922a6p+8)":
+double: 1
+ildouble: 2
+ldouble: 1
+Test "cosh_upward (0x2.c5e3acp+8)":
+ildouble: 1
+Test "cosh_upward (0x2.c5e3bp+8)":
+ildouble: 1
 Test "cosh_upward (22)":
 ildouble: 2
 ldouble: 1
@@ -6942,6 +7472,10 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "acos_tonearest":
+ildouble: 1
+ldouble: 1
+
 Function: "acos_towardzero":
 double: 1
 float: 1
@@ -7147,20 +7681,34 @@ ildouble: 1
 ldouble: 1
 
 Function: "cos_downward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "cos_tonearest":
 ildouble: 1
 ldouble: 1
 
 Function: "cos_towardzero":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cos_upward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "cosh":
 ildouble: 1
 ldouble: 1
 
@@ -7173,6 +7721,7 @@ ildouble: 1
 ldouble: 2
 
 Function: "cosh_tonearest":
+ildouble: 1
 ldouble: 1
 
 Function: "cosh_towardzero":
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 6fbfa64..3310901 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -4,6 +4,9 @@
 Test "acos (0.75)":
 ildouble: 1
 ldouble: 1
+Test "acos (0xcp-4)":
+ildouble: 1
+ldouble: 1
 
 # acos_downward
 Test "acos_downward (-0)":
@@ -14,6 +17,9 @@ ldouble: 1
 Test "acos_downward (-0.5)":
 double: 1
 idouble: 1
+Test "acos_downward (-0x8p-4)":
+float: 1
+ifloat: 1
 Test "acos_downward (-1)":
 float: 1
 ifloat: 1
@@ -29,6 +35,26 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "acos_downward (0xf.fffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.fffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_downward (0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
+
+# acos_tonearest
+Test "acos_tonearest (0xcp-4)":
+ildouble: 1
+ldouble: 1
 
 # acos_towardzero
 Test "acos_towardzero (-0)":
@@ -39,6 +65,9 @@ ldouble: 1
 Test "acos_towardzero (-0.5)":
 double: 1
 idouble: 1
+Test "acos_towardzero (-0x8p-4)":
+float: 1
+ifloat: 1
 Test "acos_towardzero (-1)":
 float: 1
 ifloat: 1
@@ -54,22 +83,100 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "acos_towardzero (0xf.fffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.fffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_towardzero (0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
 
 # acos_upward
+Test "acos_upward (+0)":
+double: 1
+idouble: 1
+Test "acos_upward (-0)":
+double: 1
+idouble: 1
 Test "acos_upward (-0.5)":
 ildouble: 1
 ldouble: 1
+Test "acos_upward (-0x1p+0)":
+double: 1
+idouble: 1
 Test "acos_upward (0.5)":
 ildouble: 1
 ldouble: 1
+Test "acos_upward (0x1.70ef54646d496p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0x1.70ef54646d497p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0x1.70ef54p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0x1.70ef56p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0xcp-4)":
+ildouble: 1
+ldouble: 1
+Test "acos_upward (0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
 
 # asin_downward
 Test "asin_downward (-0.5)":
 double: 1
 idouble: 1
+Test "asin_downward (-0x1p+0)":
+double: 1
+idouble: 1
+Test "asin_downward (-0x8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.ffffffffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffffffffp-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffp-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "asin_downward (0.5)":
 double: 1
 idouble: 1
+Test "asin_downward (0x8p-4)":
+float: 1
+ifloat: 1
 Test "asin_downward (1.0)":
 float: 1
 ifloat: 1
@@ -80,6 +187,9 @@ ldouble: 1
 Test "asin_towardzero (-0.5)":
 double: 1
 idouble: 1
+Test "asin_towardzero (-0x8p-4)":
+float: 1
+ifloat: 1
 Test "asin_towardzero (-1.0)":
 float: 1
 ifloat: 1
@@ -88,6 +198,9 @@ ldouble: 1
 Test "asin_towardzero (0.5)":
 double: 1
 idouble: 1
+Test "asin_towardzero (0x8p-4)":
+float: 1
+ifloat: 1
 Test "asin_towardzero (1.0)":
 float: 1
 ifloat: 1
@@ -95,11 +208,47 @@ ildouble: 1
 ldouble: 1
 
 # asin_upward
+Test "asin_upward (-0x8p-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "asin_upward (-0xf.fffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.ffffffffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffffffffp-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffp-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "asin_upward (-1.0)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "asin_upward (0x1p+0)":
+double: 1
+idouble: 1
+Test "asin_upward (0x8p-4)":
+ildouble: 1
+ldouble: 1
 
 # atan2
 Test "atan2 (-0.75, -1.0)":
@@ -121,6 +270,11 @@ float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "atanh (0xcp-4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 
 # cacos
 Test "Imaginary part of: cacos (+0 + 0.5 i)":
@@ -4830,6 +4984,15 @@ ldouble: 1
 Test "cbrt (-0.001)":
 ildouble: 1
 ldouble: 1
+Test "cbrt (-0x1.bp+4)":
+double: 1
+idouble: 1
+Test "cbrt (-0x4.189374bc6a7ef9d8p-12)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.18937p-12)":
+float: 1
+ifloat: 1
 Test "cbrt (-27.0)":
 double: 1
 idouble: 1
@@ -4841,6 +5004,14 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "cbrt (0xcp-4)":
+double: 1
+idouble: 1
+Test "cbrt (0xf.ep-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
 
 # ccos
 Test "Imaginary part of: ccos (-0.75 + 710.5 i)":
@@ -5511,6 +5682,9 @@ idouble: 1
 ifloat: 1
 
 # cos
+Test "cos (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
 Test "cos (M_PI_6l * 2.0)":
 double: 1
 idouble: 1
@@ -5521,6 +5695,151 @@ idouble: 2
 ifloat: 1
 
 # cos_downward
+Test "cos_downward (0x1.000000cf4a2a2p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.0000010b239a9p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.00000162a932bp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.000002d452a1p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.000002p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.0c152382d7365p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d18468p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d1846ap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d18p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d19p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb6p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1p+120)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1p+28)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a44p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6cap+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6cb08cp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6cb09p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a4705ae6ccp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.182a48p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x2.1e19e0c9bab24p+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.1e19e4p+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.1e19ep+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x3p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p+48)":
+double: 1
+idouble: 1
+Test "cos_downward (0x8p+0)":
+ildouble: 2
+ldouble: 2
+Test "cos_downward (0x8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x9p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xa.217bap+12)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xap+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xc.d4966d92d1708p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xc.d4966d92d171p-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xc.d4966p-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xcp-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xf.ffffffffffff8p+1020)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0xf.fffffp+124)":
+double: 1
+idouble: 1
 Test "cos_downward (1)":
 ildouble: 1
 ldouble: 1
@@ -5553,7 +5872,105 @@ Test "cos_downward (9)":
 float: 1
 ifloat: 1
 
+# cos_tonearest
+Test "cos_tonearest (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
+
 # cos_towardzero
+Test "cos_towardzero (0x1.000000cf4a2a2p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.0000010b239a9p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.00000162a932bp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.000002d452a1p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.000002p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.0c152382d7365p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.921fb4p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x1.921fb54442d18p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.921fb54442d19p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1p+120)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.182a4705ae6ccp+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.182a48p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19e0c9bab24p+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19e4p+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19ep+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x4p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x4p+48)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x8p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x8p+1020)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xa.217bap+12)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0xc.d4966d92d1708p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0xc.d4966d92d171p-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xc.d4966p-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xcp-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xf.fffffp+124)":
+double: 1
+idouble: 1
 Test "cos_towardzero (1)":
 ildouble: 1
 ldouble: 1
@@ -5585,6 +6002,139 @@ ildouble: 1
 ldouble: 1
 
 # cos_upward
+Test "cos_upward (-0x2p+64)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.000004p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.000005bc7d86dp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.000006p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c1522p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c152382d7366p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c1524p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.921fb4p+0)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x1.921fb54442d18468p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb54442d1846ap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb54442d18p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb54442d19p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1.921fb6p+0)":
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x1p+120)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x1p+28)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a44p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6cap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6cb08cp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6cb09p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a4705ae6ccp+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2.182a48p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x2p+64)":
+double: 1
+idouble: 1
+Test "cos_upward (0x3p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x4p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x5p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x6p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x7p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x8p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x8p+1020)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0x8p+124)":
+double: 1
+idouble: 1
+Test "cos_upward (0x9p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0xa.217bap+12)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0xap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (0xc.d4967p-4)":
+double: 1
+idouble: 1
+Test "cos_upward (0xf.ffffcp+124)":
+double: 1
+idouble: 1
+Test "cos_upward (0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
 Test "cos_upward (1)":
 float: 1
 ifloat: 1
@@ -5614,7 +6164,32 @@ Test "cos_upward (9)":
 ildouble: 1
 ldouble: 1
 
+# cosh
+Test "cosh (-0x2.c5e3acp+8)":
+double: 1
+idouble: 1
+Test "cosh (0x1.6p+4)":
+ildouble: 1
+ldouble: 1
+Test "cosh (0x2.c5e3acp+8)":
+double: 1
+idouble: 1
+
 # cosh_downward
+Test "cosh_downward (-0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_downward (0x1.6p+4)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cosh_downward (0x1.7p+4)":
+double: 1
+idouble: 1
+Test "cosh_downward (0x2.c5e3bp+8)":
+double: 1
+idouble: 1
 Test "cosh_downward (22)":
 float: 1
 ifloat: 1
@@ -5632,11 +6207,34 @@ ildouble: 1
 ldouble: 1
 
 # cosh_tonearest
+Test "cosh_tonearest (-0x2.c5e3acp+8)":
+double: 1
+idouble: 1
+Test "cosh_tonearest (0x1.6p+4)":
+ildouble: 1
+ldouble: 1
+Test "cosh_tonearest (0x2.c5e3acp+8)":
+double: 1
+idouble: 1
 Test "cosh_tonearest (22)":
 ildouble: 1
 ldouble: 1
 
 # cosh_towardzero
+Test "cosh_towardzero (-0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_towardzero (0x1.6p+4)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cosh_towardzero (0x1.7p+4)":
+double: 1
+idouble: 1
+Test "cosh_towardzero (0x2.c5e3bp+8)":
+double: 1
+idouble: 1
 Test "cosh_towardzero (22)":
 float: 1
 ifloat: 1
@@ -5654,6 +6252,27 @@ ildouble: 1
 ldouble: 1
 
 # cosh_upward
+Test "cosh_upward (-0x2.c5e3acd2922a6p+8)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (-0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_upward (0x1.6p+4)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (0x1.7p+4)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (0x1.8p+4)":
+double: 1
+idouble: 1
+Test "cosh_upward (0x2.c5e3acd2922a6p+8)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (0x2.c5e3bp+8)":
+double: 1
+idouble: 1
 Test "cosh_upward (22)":
 ildouble: 1
 ldouble: 1
@@ -7833,6 +8452,10 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "acos_tonearest":
+ildouble: 1
+ldouble: 1
+
 Function: "acos_towardzero":
 double: 1
 float: 1
@@ -7842,6 +8465,8 @@ ildouble: 1
 ldouble: 1
 
 Function: "acos_upward":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
@@ -7862,7 +8487,9 @@ ildouble: 1
 ldouble: 1
 
 Function: "asin_upward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
@@ -7967,7 +8594,9 @@ ifloat: 1
 
 Function: "cbrt":
 double: 1
+float: 1
 idouble: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 
@@ -8056,40 +8685,64 @@ ildouble: 1
 ldouble: 1
 
 Function: "cos_downward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "cos_tonearest":
 ildouble: 1
 ldouble: 1
 
 Function: "cos_towardzero":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cos_upward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "cosh":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cosh_downward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 2
 ldouble: 2
 
 Function: "cosh_tonearest":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cosh_towardzero":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 2
 ldouble: 2
 
 Function: "cosh_upward":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]