[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r23075 - in /fsf/trunk/libc: ./ malloc/ math/ nptl/ nptl/sysdeps/i386/ nptl/sysdeps/x86_64/ ports/ ports/sysdeps/hppa/fpu/ s...



Author: eglibc
Date: Thu May 16 00:02:10 2013
New Revision: 23075

Log:
Import glibc-mainline for 2013-05-16

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/malloc/obstack.c
    fsf/trunk/libc/math/atest-exp2.c
    fsf/trunk/libc/math/libm-test.inc
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/sysdeps/i386/tls.h
    fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h
    fsf/trunk/libc/ports/ChangeLog.hppa
    fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h
    fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps
    fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
    fsf/trunk/libc/sysdeps/x86_64/fpu/math_private.h
    fsf/trunk/libc/sysdeps/x86_64/fpu/multiarch/s_fma.c
    fsf/trunk/libc/sysdeps/x86_64/fpu/multiarch/s_fmaf.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu May 16 00:02:10 2013
@@ -1,3 +1,105 @@
+2013-05-13  Peter Collingbourne  <pcc@xxxxxxxxxx>
+
+	* math/atest-exp2.c (get_log2): Remove const attribute.
+
+2013-05-15  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* math/libm-test.inc (struct test_f_l_data): New type.
+	(RUN_TEST_LOOP_f_l): New macro.
+	(lrint_test_data): New variable.
+	(lrint_test): Run tests with RUN_TEST_LOOP_f_l.
+	(lrint_tonearest_test_data): New variable.
+	(lrint_test_tonearest): Run tests with RUN_TEST_LOOP_f_l.
+	(lrint_towardzero_test_data): New variable.
+	(lrint_test_towardzero): Run tests with RUN_TEST_LOOP_f_l.
+	(lrint_downward_test_data): New variable.
+	(lrint_test_downward): Run tests with RUN_TEST_LOOP_f_l.
+	(lrint_upward_test_data): New variable.
+	(lrint_test_upward): Run tests with RUN_TEST_LOOP_f_l.
+	(lround_test_data): New variable.
+	(lround_test): Run tests with RUN_TEST_LOOP_f_l.
+
+2013-05-15  Peter Collingbourne  <pcc@xxxxxxxxxx>
+
+	* sysdeps/x86_64/fpu/math_private.h (MOVQ): New macro.
+	(EXTRACT_WORDS64) Use where appropriate.
+	(INSERT_WORDS64) Likewise.
+
+	* sysdeps/x86_64/fpu/multiarch/s_fma.c (__fma_fma4): Replace xm
+	constraints with x constraints.
+	* sysdeps/x86_64/fpu/multiarch/s_fmaf.c (__fmaf_fma4): Likewise.
+
+	* malloc/obstack.c (_obstack_compat): Add initializer.
+
+2013-05-15  Edjunior Machado  <emachado@xxxxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/s390/bits/siginfo.h (siginfo_t): Remove
+	si_trapno and add si_addr_lsb to _sifields.sigfault.
+	(si_trapno): Remove macro.
+	(si_addr_lsb): Define new macro.
+	(BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values.
+
+2013-05-15  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* math/libm-test.inc (llrint_test): Consistently use TEST_f_L
+	instead of TEST_f_l.
+	(llrint_test_tonearest): Likewise.
+	(llrint_test_towardzero): Likewise.
+	(llrint_test_downward): Likewise.
+	(llrint_test_upward): Likewise.
+	(llround_test): Likewise.
+
+	* math/libm-test.inc (struct test_f_i_data): Add comment.
+	(RUN_TEST_LOOP_f_b): New macro.
+	(RUN_TEST_LOOP_f_b_tg): Likewise.
+	(finite_test_data): New variable.
+	(finite_test): Run tests with RUN_TEST_LOOP_f_b.
+	(isfinite_test_data): New variable.
+	(isfinite_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+	(isinf_test_data): New variable.
+	(isinf_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+	(isnan_test_data): New variable.
+	(isnan_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+	(isnormal_test_data): New variable.
+	(isnormal_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+	(issignaling_test_data): New variable.
+	(issignaling_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+	(signbit_test_data): New variable.
+	(signbit_test): Run tests with RUN_TEST_LOOP_f_b_tg.
+
+	* math/libm-test.inc (acos_test_data): Use ERRNO_EDOM together
+	with INVALID_EXCEPTION.
+	(acosh_test_data): Likewise.
+	(asin_test_data): Likewise.
+	(atanh_test_data): Likewise.
+	(fmod_test_data): Likewise.
+	(log_test_data): Likewise.
+	(log10_test_data): Likewise.
+	(log2_test_data): Likewise.
+	(pow_test_data): Likewise.
+	(sqrt_test_data): Likewise.
+	(y0_test_data): Likewise.
+	(y1_test_data): Likewise.
+	(yn_test_data): Likewise.
+
+	* math/libm-test.inc (test_single_errno) [TEST_INLINE]: Disable
+	function contents.
+
+	* math/libm-test.inc (struct test_ff_i_data): New type.
+	(RUN_TEST_LOOP_ff_i_tg): New macro.
+	(isgreater_test_data): New variable.
+	(isgreater_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+	(isgreaterequal_test_data): New variable.
+	(isgreaterequal_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+	(isless_test_data): New variable.
+	(isless_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+	(islessequal_test_data): New variable.
+	(islessequal_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+	(islessgreater_test_data): New variable.
+	(islessgreater_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+	(isunordered_test_data): New variable.
+	(isunordered_test): Run tests with RUN_TEST_LOOP_ff_i_tg.
+
 2013-05-14  David S. Miller  <davem@xxxxxxxxxxxxx>
 
 	* sysdeps/sparc/fpu/libm-test-ulps: Update.

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Thu May 16 00:02:10 2013
@@ -9,15 +9,15 @@
 
 * The following bugs are resolved with this release:
 
-  2546, 2560, 5159, 6809, 10060, 10062, 10357, 11120, 11561, 12387, 12723,
-  13550, 13889, 13951, 13988, 14142, 14176, 14200, 14280, 14293, 14317,
-  14327, 14478, 14496, 14582, 14686, 14812, 14888, 14908, 14920, 14952,
-  14964, 14981, 14982, 14985, 14994, 14996, 15003, 15006, 15007, 15020,
-  15023, 15036, 15054, 15055, 15062, 15078, 15084, 15085, 15086, 15160,
-  15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307,
-  15309, 15327, 15330, 15335, 15336, 15337, 15342, 15346, 15359, 15361,
-  15366, 15380, 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419,
-  15423, 15426, 15429, 15448.
+  2546, 2560, 5159, 6809, 10060, 10062, 10357, 10686, 11120, 11561, 12387,
+  12723, 13550, 13889, 13951, 13988, 14142, 14176, 14200, 14280, 14293,
+  14317, 14327, 14478, 14496, 14582, 14686, 14812, 14888, 14908, 14920,
+  14952, 14964, 14981, 14982, 14985, 14994, 14996, 15000, 15003, 15006,
+  15007, 15020, 15023, 15036, 15054, 15055, 15062, 15078, 15084, 15085,
+  15086, 15160, 15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304,
+  15305, 15307, 15309, 15327, 15330, 15335, 15336, 15337, 15342, 15346,
+  15359, 15361, 15366, 15380, 15394, 15395, 15405, 15406, 15409, 15416,
+  15418, 15419, 15423, 15426, 15429, 15448.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).

Modified: fsf/trunk/libc/malloc/obstack.c
==============================================================================
--- fsf/trunk/libc/malloc/obstack.c (original)
+++ fsf/trunk/libc/malloc/obstack.c Thu May 16 00:02:10 2013
@@ -115,7 +115,7 @@
 /* A looong time ago (before 1994, anyway; we're not sure) this global variable
    was used by non-GNU-C macros to avoid multiple evaluation.  The GNU C
    library still exports it because somebody might use it.  */
-struct obstack *_obstack_compat;
+struct obstack *_obstack_compat = 0;
 compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
 #  endif
 # endif

Modified: fsf/trunk/libc/math/atest-exp2.c
==============================================================================
--- fsf/trunk/libc/math/atest-exp2.c (original)
+++ fsf/trunk/libc/math/atest-exp2.c Thu May 16 00:02:10 2013
@@ -77,7 +77,6 @@
  				      << (FRAC - i * 4 - 4) % mpbpl);
 }
 
-static mp_limb_t *get_log2(void) __attribute__((const));
 static mp_limb_t *
 get_log2(void)
 {

Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Thu May 16 00:02:10 2013
@@ -560,6 +560,7 @@
 test_single_errno (const char *test_name, int errno_value,
 		   int expected_value, const char *expected_name)
 {
+#ifndef TEST_INLINE
   if (errno_value == expected_value)
     {
       if (print_screen (1))
@@ -573,6 +574,7 @@
 	printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
 		test_name, errno_value, expected_value, expected_name);
     }
+#endif
 }
 
 /* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
@@ -981,12 +983,30 @@
   __complex__ FLOAT max_ulp;
   int exceptions;
 };
+/* Used for all of RUN_TEST_LOOP_f_i, RUN_TEST_LOOP_f_i_tg,
+   RUN_TEST_LOOP_f_b and RUN_TEST_LOOP_f_b_tg.  */
 struct test_f_i_data
 {
   const char *test_name;
   FLOAT arg;
   int expected;
   int max_ulp;
+  int exceptions;
+};
+struct test_ff_i_data
+{
+  const char *test_name;
+  FLOAT arg1, arg2;
+  int expected;
+  int max_ulp;
+  int exceptions;
+};
+struct test_f_l_data
+{
+  const char *test_name;
+  FLOAT arg;
+  long int expected;
+  long int max_ulp;
   int exceptions;
 };
 
@@ -1216,18 +1236,47 @@
 			 MAX_ULP, EXCEPTIONS)				\
   check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED,		\
 	     MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_ff_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)		\
+  IF_ROUND_INIT_ ## ROUNDING_MODE					\
+    for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)	\
+      RUN_TEST_ff_i_tg ((ARRAY)[i].test_name, FUNC_NAME,		\
+			(ARRAY)[i].arg1, (ARRAY)[i].arg2,		\
+			(ARRAY)[i].expected, (ARRAY)[i].max_ulp,	\
+			(ARRAY)[i].exceptions);				\
+  ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED,	\
 		     MAX_ULP, EXCEPTIONS)			\
   check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,	\
 	      MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_b(FUNC_NAME, ARRAY, ROUNDING_MODE)		\
+  IF_ROUND_INIT_ ## ROUNDING_MODE					\
+    for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)	\
+      RUN_TEST_f_b ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,	\
+		    (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
+		    (ARRAY)[i].exceptions);				\
+  ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,	\
 			MAX_ULP, EXCEPTIONS)			\
   check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED,		\
 	      MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_b_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)		\
+  IF_ROUND_INIT_ ## ROUNDING_MODE					\
+    for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)	\
+      RUN_TEST_f_b_tg ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,	\
+		       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
+		       (ARRAY)[i].exceptions);				\
+  ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED,	\
 		     MAX_ULP, EXCEPTIONS)			\
   check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,	\
 	      MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_LOOP_f_l(FUNC_NAME, ARRAY, ROUNDING_MODE)		\
+  IF_ROUND_INIT_ ## ROUNDING_MODE					\
+    for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)	\
+      RUN_TEST_f_l ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,	\
+		    (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
+		    (ARRAY)[i].exceptions);				\
+  ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED,	\
 		     MAX_ULP, EXCEPTIONS)			\
   check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,	\
@@ -1263,15 +1312,15 @@
 static const struct test_f_f_data acos_test_data[] =
   {
     START_DATA (acos),
-    TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (acos, qnan_value, qnan_value),
 
     /* |x| > 1: */
-    TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    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),
@@ -1423,12 +1472,12 @@
   {
     START_DATA (acosh),
     TEST_f_f (acosh, plus_infty, plus_infty),
-    TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (acosh, qnan_value, qnan_value),
 
     /* x < 1:  */
-    TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
+    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),
@@ -1452,15 +1501,15 @@
 static const struct test_f_f_data asin_test_data[] =
   {
     START_DATA (asin),
-    TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (asin, qnan_value, qnan_value),
 
     /* asin x == qNaN plus invalid exception for |x| > 1.  */
-    TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    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),
@@ -1688,10 +1737,10 @@
     TEST_f_f (atanh, qnan_value, qnan_value),
 
     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
-    TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    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),
     END_DATA (atanh)
@@ -8378,19 +8427,24 @@
 }
 
 
+static const struct test_f_i_data finite_test_data[] =
+  {
+    START_DATA (finite),
+    TEST_f_b (finite, 0, 1),
+    TEST_f_b (finite, minus_zero, 1),
+    TEST_f_b (finite, 10, 1),
+    TEST_f_b (finite, min_subnorm_value, 1),
+    TEST_f_b (finite, plus_infty, 0),
+    TEST_f_b (finite, minus_infty, 0),
+    TEST_f_b (finite, qnan_value, 0),
+    END_DATA (finite)
+  };
+
 static void
 finite_test (void)
 {
   START (finite);
-
-  TEST_f_b (finite, 0, 1);
-  TEST_f_b (finite, minus_zero, 1);
-  TEST_f_b (finite, 10, 1);
-  TEST_f_b (finite, min_subnorm_value, 1);
-  TEST_f_b (finite, plus_infty, 0);
-  TEST_f_b (finite, minus_infty, 0);
-  TEST_f_b (finite, qnan_value, 0);
-
+  RUN_TEST_LOOP_f_b (finite, finite_test_data, );
   END (finite);
 }
 
@@ -9547,7 +9601,7 @@
     /* fmod (x, +0) == qNaN plus invalid exception.  */
     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     /* fmod (x, -0) == qNaN plus invalid exception.  */
-    TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     /* fmod (x, +inf) == x for x not infinite.  */
     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
@@ -9762,233 +9816,288 @@
   END (ilogb);
 }
 
+static const struct test_f_i_data isfinite_test_data[] =
+  {
+    START_DATA (isfinite),
+    TEST_f_b (isfinite, 0, 1),
+    TEST_f_b (isfinite, minus_zero, 1),
+    TEST_f_b (isfinite, 10, 1),
+    TEST_f_b (isfinite, min_subnorm_value, 1),
+    TEST_f_b (isfinite, plus_infty, 0),
+    TEST_f_b (isfinite, minus_infty, 0),
+    TEST_f_b (isfinite, qnan_value, 0),
+    END_DATA (isfinite)
+  };
+
 static void
 isfinite_test (void)
 {
   START (isfinite);
-
-  TEST_f_b (isfinite, 0, 1);
-  TEST_f_b (isfinite, minus_zero, 1);
-  TEST_f_b (isfinite, 10, 1);
-  TEST_f_b (isfinite, min_subnorm_value, 1);
-  TEST_f_b (isfinite, plus_infty, 0);
-  TEST_f_b (isfinite, minus_infty, 0);
-  TEST_f_b (isfinite, qnan_value, 0);
-
+  RUN_TEST_LOOP_f_b_tg (isfinite, isfinite_test_data, );
   END (isfinite);
 }
 
+static const struct test_ff_i_data isgreater_test_data[] =
+  {
+    START_DATA (isgreater),
+    TEST_ff_i (isgreater, minus_zero, minus_zero, 0),
+    TEST_ff_i (isgreater, minus_zero, plus_zero, 0),
+    TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0),
+    TEST_ff_i (isgreater, minus_zero, qnan_value, 0),
+    TEST_ff_i (isgreater, plus_zero, minus_zero, 0),
+    TEST_ff_i (isgreater, plus_zero, plus_zero, 0),
+    TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0),
+    TEST_ff_i (isgreater, plus_zero, qnan_value, 0),
+    TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1),
+    TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1),
+    TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0),
+    TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0),
+    TEST_ff_i (isgreater, qnan_value, minus_zero, 0),
+    TEST_ff_i (isgreater, qnan_value, plus_zero, 0),
+    TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0),
+    TEST_ff_i (isgreater, qnan_value, qnan_value, 0),
+    END_DATA (isgreater)
+  };
+
 static void
 isgreater_test (void)
 {
   START (isgreater);
-
-  TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
-  TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
-  TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
-  TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
-  TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
-  TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
-  TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
-  TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
-  TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
-  TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
-  TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
-  TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
-  TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
-  TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
-  TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
-  TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
-
+  RUN_TEST_LOOP_ff_i_tg (isgreater, isgreater_test_data, );
   END (isgreater);
 }
 
+static const struct test_ff_i_data isgreaterequal_test_data[] =
+  {
+    START_DATA (isgreaterequal),
+    TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1),
+    TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1),
+    TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0),
+    TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0),
+    TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1),
+    TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1),
+    TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0),
+    TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0),
+    TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0),
+    TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0),
+    TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0),
+    TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0),
+    END_DATA (isgreaterequal)
+  };
+
 static void
 isgreaterequal_test (void)
 {
   START (isgreaterequal);
-
-  TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
-  TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
-  TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
-  TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
-  TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
-  TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
-  TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
-  TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
-  TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
-  TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
-  TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
-  TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
-  TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
-  TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
-  TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
-  TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
-
+  RUN_TEST_LOOP_ff_i_tg (isgreaterequal, isgreaterequal_test_data, );
   END (isgreaterequal);
 }
 
+static const struct test_f_i_data isinf_test_data[] =
+  {
+    START_DATA (isinf),
+    TEST_f_b (isinf, 0, 0),
+    TEST_f_b (isinf, minus_zero, 0),
+    TEST_f_b (isinf, 10, 0),
+    TEST_f_b (isinf, min_subnorm_value, 0),
+    TEST_f_b (isinf, plus_infty, 1),
+    TEST_f_b (isinf, minus_infty, 1),
+    TEST_f_b (isinf, qnan_value, 0),
+    END_DATA (isinf)
+  };
+
 static void
 isinf_test (void)
 {
   START (isinf);
-
-  TEST_f_b (isinf, 0, 0);
-  TEST_f_b (isinf, minus_zero, 0);
-  TEST_f_b (isinf, 10, 0);
-  TEST_f_b (isinf, min_subnorm_value, 0);
-  TEST_f_b (isinf, plus_infty, 1);
-  TEST_f_b (isinf, minus_infty, 1);
-  TEST_f_b (isinf, qnan_value, 0);
-
+  RUN_TEST_LOOP_f_b_tg (isinf, isinf_test_data, );
   END (isinf);
 }
 
+static const struct test_ff_i_data isless_test_data[] =
+  {
+    START_DATA (isless),
+    TEST_ff_i (isless, minus_zero, minus_zero, 0),
+    TEST_ff_i (isless, minus_zero, plus_zero, 0),
+    TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1),
+    TEST_ff_i (isless, minus_zero, qnan_value, 0),
+    TEST_ff_i (isless, plus_zero, minus_zero, 0),
+    TEST_ff_i (isless, plus_zero, plus_zero, 0),
+    TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1),
+    TEST_ff_i (isless, plus_zero, qnan_value, 0),
+    TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0),
+    TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0),
+    TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0),
+    TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0),
+    TEST_ff_i (isless, qnan_value, minus_zero, 0),
+    TEST_ff_i (isless, qnan_value, plus_zero, 0),
+    TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0),
+    TEST_ff_i (isless, qnan_value, qnan_value, 0),
+    END_DATA (isless)
+  };
+
 static void
 isless_test (void)
 {
   START (isless);
-
-  TEST_ff_i (isless, minus_zero, minus_zero, 0);
-  TEST_ff_i (isless, minus_zero, plus_zero, 0);
-  TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
-  TEST_ff_i (isless, minus_zero, qnan_value, 0);
-  TEST_ff_i (isless, plus_zero, minus_zero, 0);
-  TEST_ff_i (isless, plus_zero, plus_zero, 0);
-  TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
-  TEST_ff_i (isless, plus_zero, qnan_value, 0);
-  TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
-  TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
-  TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
-  TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
-  TEST_ff_i (isless, qnan_value, minus_zero, 0);
-  TEST_ff_i (isless, qnan_value, plus_zero, 0);
-  TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
-  TEST_ff_i (isless, qnan_value, qnan_value, 0);
-
+  RUN_TEST_LOOP_ff_i_tg (isless, isless_test_data, );
   END (isless);
 }
 
+static const struct test_ff_i_data islessequal_test_data[] =
+  {
+    START_DATA (islessequal),
+    TEST_ff_i (islessequal, minus_zero, minus_zero, 1),
+    TEST_ff_i (islessequal, minus_zero, plus_zero, 1),
+    TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1),
+    TEST_ff_i (islessequal, minus_zero, qnan_value, 0),
+    TEST_ff_i (islessequal, plus_zero, minus_zero, 1),
+    TEST_ff_i (islessequal, plus_zero, plus_zero, 1),
+    TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1),
+    TEST_ff_i (islessequal, plus_zero, qnan_value, 0),
+    TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0),
+    TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0),
+    TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1),
+    TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0),
+    TEST_ff_i (islessequal, qnan_value, minus_zero, 0),
+    TEST_ff_i (islessequal, qnan_value, plus_zero, 0),
+    TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0),
+    TEST_ff_i (islessequal, qnan_value, qnan_value, 0),
+    END_DATA (islessequal)
+  };
+
 static void
 islessequal_test (void)
 {
   START (islessequal);
-
-  TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
-  TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
-  TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
-  TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
-  TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
-  TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
-  TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
-  TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
-  TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
-  TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
-  TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
-  TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
-  TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
-  TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
-  TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
-  TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
-
+  RUN_TEST_LOOP_ff_i_tg (islessequal, islessequal_test_data, );
   END (islessequal);
 }
 
+static const struct test_ff_i_data islessgreater_test_data[] =
+  {
+    START_DATA (islessgreater),
+    TEST_ff_i (islessgreater, minus_zero, minus_zero, 0),
+    TEST_ff_i (islessgreater, minus_zero, plus_zero, 0),
+    TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1),
+    TEST_ff_i (islessgreater, minus_zero, qnan_value, 0),
+    TEST_ff_i (islessgreater, plus_zero, minus_zero, 0),
+    TEST_ff_i (islessgreater, plus_zero, plus_zero, 0),
+    TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1),
+    TEST_ff_i (islessgreater, plus_zero, qnan_value, 0),
+    TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1),
+    TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1),
+    TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0),
+    TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0),
+    TEST_ff_i (islessgreater, qnan_value, minus_zero, 0),
+    TEST_ff_i (islessgreater, qnan_value, plus_zero, 0),
+    TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0),
+    TEST_ff_i (islessgreater, qnan_value, qnan_value, 0),
+    END_DATA (islessgreater)
+  };
+
 static void
 islessgreater_test (void)
 {
   START (islessgreater);
-
-  TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
-  TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
-  TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
-  TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
-  TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
-  TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
-  TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
-  TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
-  TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
-  TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
-  TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
-  TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
-  TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
-  TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
-  TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
-  TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
-
+  RUN_TEST_LOOP_ff_i_tg (islessgreater, islessgreater_test_data, );
   END (islessgreater);
 }
 
+static const struct test_f_i_data isnan_test_data[] =
+  {
+    START_DATA (isnan),
+    TEST_f_b (isnan, 0, 0),
+    TEST_f_b (isnan, minus_zero, 0),
+    TEST_f_b (isnan, 10, 0),
+    TEST_f_b (isnan, min_subnorm_value, 0),
+    TEST_f_b (isnan, plus_infty, 0),
+    TEST_f_b (isnan, minus_infty, 0),
+    TEST_f_b (isnan, qnan_value, 1),
+    END_DATA (isnan)
+  };
+
 static void
 isnan_test (void)
 {
   START (isnan);
-
-  TEST_f_b (isnan, 0, 0);
-  TEST_f_b (isnan, minus_zero, 0);
-  TEST_f_b (isnan, 10, 0);
-  TEST_f_b (isnan, min_subnorm_value, 0);
-  TEST_f_b (isnan, plus_infty, 0);
-  TEST_f_b (isnan, minus_infty, 0);
-  TEST_f_b (isnan, qnan_value, 1);
-
+  RUN_TEST_LOOP_f_b_tg (isnan, isnan_test_data, );
   END (isnan);
 }
 
+static const struct test_f_i_data isnormal_test_data[] =
+  {
+    START_DATA (isnormal),
+    TEST_f_b (isnormal, 0, 0),
+    TEST_f_b (isnormal, minus_zero, 0),
+    TEST_f_b (isnormal, 10, 1),
+    TEST_f_b (isnormal, min_subnorm_value, 0),
+    TEST_f_b (isnormal, plus_infty, 0),
+    TEST_f_b (isnormal, minus_infty, 0),
+    TEST_f_b (isnormal, qnan_value, 0),
+    END_DATA (isnormal)
+  };
+
 static void
 isnormal_test (void)
 {
   START (isnormal);
-
-  TEST_f_b (isnormal, 0, 0);
-  TEST_f_b (isnormal, minus_zero, 0);
-  TEST_f_b (isnormal, 10, 1);
-  TEST_f_b (isnormal, min_subnorm_value, 0);
-  TEST_f_b (isnormal, plus_infty, 0);
-  TEST_f_b (isnormal, minus_infty, 0);
-  TEST_f_b (isnormal, qnan_value, 0);
-
+  RUN_TEST_LOOP_f_b_tg (isnormal, isnormal_test_data, );
   END (isnormal);
 }
 
+static const struct test_f_i_data issignaling_test_data[] =
+  {
+    START_DATA (issignaling),
+    TEST_f_b (issignaling, 0, 0),
+    TEST_f_b (issignaling, minus_zero, 0),
+    TEST_f_b (issignaling, 10, 0),
+    TEST_f_b (issignaling, min_subnorm_value, 0),
+    TEST_f_b (issignaling, plus_infty, 0),
+    TEST_f_b (issignaling, minus_infty, 0),
+    TEST_f_b (issignaling, qnan_value, 0),
+    END_DATA (issignaling)
+  };
+
 static void
 issignaling_test (void)
 {
   START (issignaling);
-
-  TEST_f_b (issignaling, 0, 0);
-  TEST_f_b (issignaling, minus_zero, 0);
-  TEST_f_b (issignaling, 10, 0);
-  TEST_f_b (issignaling, min_subnorm_value, 0);
-  TEST_f_b (issignaling, plus_infty, 0);
-  TEST_f_b (issignaling, minus_infty, 0);
-  TEST_f_b (issignaling, qnan_value, 0);
-
+  RUN_TEST_LOOP_f_b_tg (issignaling, issignaling_test_data, );
   END (issignaling);
 }
 
+static const struct test_ff_i_data isunordered_test_data[] =
+  {
+    START_DATA (isunordered),
+    TEST_ff_i (isunordered, minus_zero, minus_zero, 0),
+    TEST_ff_i (isunordered, minus_zero, plus_zero, 0),
+    TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0),
+    TEST_ff_i (isunordered, minus_zero, qnan_value, 1),
+    TEST_ff_i (isunordered, plus_zero, minus_zero, 0),
+    TEST_ff_i (isunordered, plus_zero, plus_zero, 0),
+    TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0),
+    TEST_ff_i (isunordered, plus_zero, qnan_value, 1),
+    TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0),
+    TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0),
+    TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0),
+    TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1),
+    TEST_ff_i (isunordered, qnan_value, minus_zero, 1),
+    TEST_ff_i (isunordered, qnan_value, plus_zero, 1),
+    TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1),
+    TEST_ff_i (isunordered, qnan_value, qnan_value, 1),
+    END_DATA (isunordered)
+  };
+
 static void
 isunordered_test (void)
 {
   START (isunordered);
-
-  TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
-  TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
-  TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
-  TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
-  TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
-  TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
-  TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
-  TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
-  TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
-  TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
-  TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
-  TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
-  TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
-  TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
-  TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
-  TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
-
+  RUN_TEST_LOOP_ff_i_tg (isunordered, isunordered_test_data, );
   END (isunordered);
 }
 
@@ -10252,207 +10361,199 @@
 }
 
 
+static const struct test_f_l_data lrint_test_data[] =
+  {
+    START_DATA (lrint),
+    /* XXX this test is incomplete.  We need to have a way to specifiy
+       the rounding method and test the critical cases.  So far, only
+       unproblematic numbers are tested.  */
+    /* TODO: missing +/-Inf as well as qNaN tests.  */
+    TEST_f_l (lrint, 0.0, 0),
+    TEST_f_l (lrint, minus_zero, 0),
+    TEST_f_l (lrint, 0.2L, 0),
+    TEST_f_l (lrint, -0.2L, 0),
+
+    TEST_f_l (lrint, 1.4L, 1),
+    TEST_f_l (lrint, -1.4L, -1),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600),
+    TEST_f_l (lrint, -8388600.3L, -8388600),
+
+    TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+    TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+    END_DATA (lrint)
+  };
+
 static void
 lrint_test (void)
+{
+  START (lrint);
+  RUN_TEST_LOOP_f_l (lrint, lrint_test_data, );
+  END (lrint);
+}
+
+
+static const struct test_f_l_data lrint_tonearest_test_data[] =
+  {
+    START_DATA (lrint_tonearest),
+    TEST_f_l (lrint, 0.0, 0),
+    TEST_f_l (lrint, minus_zero, 0),
+    TEST_f_l (lrint, 0.2L, 0),
+    TEST_f_l (lrint, -0.2L, 0),
+    TEST_f_l (lrint, 0.5L, 0),
+    TEST_f_l (lrint, -0.5L, 0),
+    TEST_f_l (lrint, 0.8L, 1),
+    TEST_f_l (lrint, -0.8L, -1),
+
+    TEST_f_l (lrint, 1.4L, 1),
+    TEST_f_l (lrint, -1.4L, -1),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600),
+    TEST_f_l (lrint, -8388600.3L, -8388600),
+
+    TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+    TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+    END_DATA (lrint_tonearest)
+  };
+
+static void
+lrint_test_tonearest (void)
+{
+  START (lrint_tonearest);
+  RUN_TEST_LOOP_f_l (lrint, lrint_tonearest_test_data, FE_TONEAREST);
+  END (lrint_tonearest);
+}
+
+
+static const struct test_f_l_data lrint_towardzero_test_data[] =
+  {
+    START_DATA (lrint_towardzero),
+    TEST_f_l (lrint, 0.0, 0),
+    TEST_f_l (lrint, minus_zero, 0),
+    TEST_f_l (lrint, 0.2L, 0),
+    TEST_f_l (lrint, -0.2L, 0),
+    TEST_f_l (lrint, 0.5L, 0),
+    TEST_f_l (lrint, -0.5L, 0),
+    TEST_f_l (lrint, 0.8L, 0),
+    TEST_f_l (lrint, -0.8L, 0),
+
+    TEST_f_l (lrint, 1.4L, 1),
+    TEST_f_l (lrint, -1.4L, -1),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600),
+    TEST_f_l (lrint, -8388600.3L, -8388600),
+
+    TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+    TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+    END_DATA (lrint_towardzero)
+  };
+
+static void
+lrint_test_towardzero (void)
+{
+  START (lrint_towardzero);
+  RUN_TEST_LOOP_f_l (lrint, lrint_towardzero_test_data, FE_TOWARDZERO);
+  END (lrint_towardzero);
+}
+
+
+static const struct test_f_l_data lrint_downward_test_data[] =
+  {
+    START_DATA (lrint_downward),
+    TEST_f_l (lrint, 0.0, 0),
+    TEST_f_l (lrint, minus_zero, 0),
+    TEST_f_l (lrint, 0.2L, 0),
+    TEST_f_l (lrint, -0.2L, -1),
+    TEST_f_l (lrint, 0.5L, 0),
+    TEST_f_l (lrint, -0.5L, -1),
+    TEST_f_l (lrint, 0.8L, 0),
+    TEST_f_l (lrint, -0.8L, -1),
+
+    TEST_f_l (lrint, 1.4L, 1),
+    TEST_f_l (lrint, -1.4L, -2),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600),
+    TEST_f_l (lrint, -8388600.3L, -8388601),
+
+    TEST_f_l (lrint, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+    TEST_f_l (lrint, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+    END_DATA (lrint_downward)
+  };
+
+static void
+lrint_test_downward (void)
+{
+  START (lrint_downward);
+  RUN_TEST_LOOP_f_l (lrint, lrint_downward_test_data, FE_DOWNWARD);
+  END (lrint_downward);
+}
+
+
+static const struct test_f_l_data lrint_upward_test_data[] =
+  {
+    START_DATA (lrint_upward),
+    TEST_f_l (lrint, 0.0, 0),
+    TEST_f_l (lrint, minus_zero, 0),
+    TEST_f_l (lrint, 0.2L, 1),
+    TEST_f_l (lrint, -0.2L, 0),
+    TEST_f_l (lrint, 0.5L, 1),
+    TEST_f_l (lrint, -0.5L, 0),
+    TEST_f_l (lrint, 0.8L, 1),
+    TEST_f_l (lrint, -0.8L, 0),
+
+    TEST_f_l (lrint, 1.4L, 2),
+    TEST_f_l (lrint, -1.4L, -1),
+
+    TEST_f_l (lrint, 8388600.3L, 8388601),
+    TEST_f_l (lrint, -8388600.3L, -8388600),
+
+#ifndef TEST_FLOAT
+    TEST_f_l (lrint, 1071930.0008, 1071931),
+    TEST_f_l (lrint, 1073741824.01, 1073741825),
+# if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
+    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+# endif
+#endif
+    END_DATA (lrint_upward)
+  };
+
+static void
+lrint_test_upward (void)
+{
+  START (lrint_upward);
+  RUN_TEST_LOOP_f_l (lrint, lrint_upward_test_data, FE_UPWARD);
+  END (lrint_upward);
+}
+
+
+static void
+llrint_test (void)
 {
   /* XXX this test is incomplete.  We need to have a way to specifiy
      the rounding method and test the critical cases.  So far, only
      unproblematic numbers are tested.  */
   /* TODO: missing +/-Inf as well as qNaN tests.  */
 
-  START (lrint);
-
-  TEST_f_l (lrint, 0.0, 0);
-  TEST_f_l (lrint, minus_zero, 0);
-  TEST_f_l (lrint, 0.2L, 0);
-  TEST_f_l (lrint, -0.2L, 0);
-
-  TEST_f_l (lrint, 1.4L, 1);
-  TEST_f_l (lrint, -1.4L, -1);
-
-  TEST_f_l (lrint, 8388600.3L, 8388600);
-  TEST_f_l (lrint, -8388600.3L, -8388600);
-
-  TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
-  TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
-  TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
-
-  END (lrint);
-}
-
-
-static void
-lrint_test_tonearest (void)
-{
-  int save_round_mode;
-  START (lrint_tonearest);
-
-  save_round_mode = fegetround ();
-
-  if (!fesetround (FE_TONEAREST))
-    {
-      TEST_f_l (lrint, 0.0, 0);
-      TEST_f_l (lrint, minus_zero, 0);
-      TEST_f_l (lrint, 0.2L, 0);
-      TEST_f_l (lrint, -0.2L, 0);
-      TEST_f_l (lrint, 0.5L, 0);
-      TEST_f_l (lrint, -0.5L, 0);
-      TEST_f_l (lrint, 0.8L, 1);
-      TEST_f_l (lrint, -0.8L, -1);
-
-      TEST_f_l (lrint, 1.4L, 1);
-      TEST_f_l (lrint, -1.4L, -1);
-
-      TEST_f_l (lrint, 8388600.3L, 8388600);
-      TEST_f_l (lrint, -8388600.3L, -8388600);
-
-      TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
-      TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
-      TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
-    }
-
-  fesetround (save_round_mode);
-
-  END (lrint_tonearest);
-}
-
-
-static void
-lrint_test_towardzero (void)
-{
-  int save_round_mode;
-  START (lrint_towardzero);
-
-  save_round_mode = fegetround ();
-
-  if (!fesetround (FE_TOWARDZERO))
-    {
-      TEST_f_l (lrint, 0.0, 0);
-      TEST_f_l (lrint, minus_zero, 0);
-      TEST_f_l (lrint, 0.2L, 0);
-      TEST_f_l (lrint, -0.2L, 0);
-      TEST_f_l (lrint, 0.5L, 0);
-      TEST_f_l (lrint, -0.5L, 0);
-      TEST_f_l (lrint, 0.8L, 0);
-      TEST_f_l (lrint, -0.8L, 0);
-
-      TEST_f_l (lrint, 1.4L, 1);
-      TEST_f_l (lrint, -1.4L, -1);
-
-      TEST_f_l (lrint, 8388600.3L, 8388600);
-      TEST_f_l (lrint, -8388600.3L, -8388600);
-
-      TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
-      TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
-      TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
-    }
-
-  fesetround (save_round_mode);
-
-  END (lrint_towardzero);
-}
-
-
-static void
-lrint_test_downward (void)
-{
-  int save_round_mode;
-  START (lrint_downward);
-
-  save_round_mode = fegetround ();
-
-  if (!fesetround (FE_DOWNWARD))
-    {
-      TEST_f_l (lrint, 0.0, 0);
-      TEST_f_l (lrint, minus_zero, 0);
-      TEST_f_l (lrint, 0.2L, 0);
-      TEST_f_l (lrint, -0.2L, -1);
-      TEST_f_l (lrint, 0.5L, 0);
-      TEST_f_l (lrint, -0.5L, -1);
-      TEST_f_l (lrint, 0.8L, 0);
-      TEST_f_l (lrint, -0.8L, -1);
-
-      TEST_f_l (lrint, 1.4L, 1);
-      TEST_f_l (lrint, -1.4L, -2);
-
-      TEST_f_l (lrint, 8388600.3L, 8388600);
-      TEST_f_l (lrint, -8388600.3L, -8388601);
-
-      TEST_f_l (lrint, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
-      TEST_f_l (lrint, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
-      TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
-    }
-
-  fesetround (save_round_mode);
-
-  END (lrint_downward);
-}
-
-
-static void
-lrint_test_upward (void)
-{
-  int save_round_mode;
-  START (lrint_upward);
-
-  save_round_mode = fegetround ();
-
-  if (!fesetround (FE_UPWARD))
-    {
-      TEST_f_l (lrint, 0.0, 0);
-      TEST_f_l (lrint, minus_zero, 0);
-      TEST_f_l (lrint, 0.2L, 1);
-      TEST_f_l (lrint, -0.2L, 0);
-      TEST_f_l (lrint, 0.5L, 1);
-      TEST_f_l (lrint, -0.5L, 0);
-      TEST_f_l (lrint, 0.8L, 1);
-      TEST_f_l (lrint, -0.8L, 0);
-
-      TEST_f_l (lrint, 1.4L, 2);
-      TEST_f_l (lrint, -1.4L, -1);
-
-      TEST_f_l (lrint, 8388600.3L, 8388601);
-      TEST_f_l (lrint, -8388600.3L, -8388600);
-
-#ifndef TEST_FLOAT
-      TEST_f_l (lrint, 1071930.0008, 1071931);
-      TEST_f_l (lrint, 1073741824.01, 1073741825);
-# if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
-      TEST_f_l (lrint, 281474976710656.025, 281474976710656);
-# endif
-#endif
-    }
-
-  fesetround (save_round_mode);
-
-  END (lrint_upward);
-}
-
-
-static void
-llrint_test (void)
-{
-  /* XXX this test is incomplete.  We need to have a way to specifiy
-     the rounding method and test the critical cases.  So far, only
-     unproblematic numbers are tested.  */
-  /* TODO: missing +/-Inf as well as qNaN tests.  */
-
   START (llrint);
 
   TEST_f_L (llrint, 0.0, 0);
@@ -10466,7 +10567,7 @@
   TEST_f_L (llrint, 8388600.3L, 8388600);
   TEST_f_L (llrint, -8388600.3L, -8388600);
 
-  TEST_f_l (llrint, 1071930.0008, 1071930);
+  TEST_f_L (llrint, 1071930.0008, 1071930);
 
   /* Test boundary conditions.  */
   /* 0x1FFFFF */
@@ -10601,7 +10702,7 @@
       TEST_f_L (llrint, 8388600.3L, 8388600);
       TEST_f_L (llrint, -8388600.3L, -8388600);
 
-      TEST_f_l (llrint, 1071930.0008, 1071930);
+      TEST_f_L (llrint, 1071930.0008, 1071930);
 
       /* Test boundary conditions.  */
       /* 0x1FFFFF */
@@ -10739,7 +10840,7 @@
       TEST_f_L (llrint, 8388600.3L, 8388600);
       TEST_f_L (llrint, -8388600.3L, -8388600);
 
-      TEST_f_l (llrint, 1071930.0008, 1071930);
+      TEST_f_L (llrint, 1071930.0008, 1071930);
 
       /* Test boundary conditions.  */
       /* 0x1FFFFF */
@@ -10877,7 +10978,7 @@
       TEST_f_L (llrint, 8388600.3L, 8388600);
       TEST_f_L (llrint, -8388600.3L, -8388601);
 
-      TEST_f_l (llrint, 1071930.0008, 1071930);
+      TEST_f_L (llrint, 1071930.0008, 1071930);
 
       /* Test boundary conditions.  */
       /* 0x1FFFFF */
@@ -11011,7 +11112,7 @@
       TEST_f_L (llrint, 8388600.3L, 8388601);
       TEST_f_L (llrint, -8388600.3L, -8388600);
 #ifndef TEST_FLOAT
-      TEST_f_l (llrint, 1071930.0008, 1071931);
+      TEST_f_L (llrint, 1071930.0008, 1071931);
 #endif
       /* Test boundary conditions.  */
       /* 0x1FFFFF */
@@ -11133,9 +11234,9 @@
 
     TEST_f_f (log, 1, 0),
 
-    TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (log, plus_infty, plus_infty),
     TEST_f_f (log, qnan_value, qnan_value),
 
@@ -11170,9 +11271,9 @@
     TEST_f_f (log10, 1, 0),
 
     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
-    TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (log10, plus_infty, plus_infty),
     TEST_f_f (log10, qnan_value, qnan_value),
@@ -11245,9 +11346,9 @@
 
     TEST_f_f (log2, 1, 0),
 
-    TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (log2, plus_infty, plus_infty),
     TEST_f_f (log2, qnan_value, qnan_value),
@@ -11348,46 +11449,51 @@
   END (logb_downward);
 }
 
+static const struct test_f_l_data lround_test_data[] =
+  {
+    START_DATA (lround),
+    /* TODO: missing +/-Inf as well as qNaN tests.  */
+    TEST_f_l (lround, 0, 0),
+    TEST_f_l (lround, minus_zero, 0),
+    TEST_f_l (lround, 0.2L, 0.0),
+    TEST_f_l (lround, -0.2L, 0),
+    TEST_f_l (lround, 0.5, 1),
+    TEST_f_l (lround, -0.5, -1),
+    TEST_f_l (lround, 0.8L, 1),
+    TEST_f_l (lround, -0.8L, -1),
+    TEST_f_l (lround, 1.5, 2),
+    TEST_f_l (lround, -1.5, -2),
+    TEST_f_l (lround, 22514.5, 22515),
+    TEST_f_l (lround, -22514.5, -22515),
+    TEST_f_l (lround, 1071930.0008, 1071930),
+#ifndef TEST_FLOAT
+    TEST_f_l (lround, 1073741824.01, 1073741824),
+# if LONG_MAX > 281474976710656
+    TEST_f_l (lround, 281474976710656.025, 281474976710656),
+    TEST_f_l (lround, 18014398509481974, 18014398509481974),
+# endif
+    TEST_f_l (lround, 2097152.5, 2097153),
+    TEST_f_l (lround, -2097152.5, -2097153),
+    /* nextafter(0.5,-1)  */
+    TEST_f_l (lround, 0x1.fffffffffffffp-2, 0),
+    /* nextafter(-0.5,1)  */
+    TEST_f_l (lround, -0x1.fffffffffffffp-2, 0),
+#else
+    /* nextafter(0.5,-1)  */
+    TEST_f_l (lround, 0x1.fffffp-2, 0),
+    /* nextafter(-0.5,1)  */
+    TEST_f_l (lround, -0x1.fffffp-2, 0),
+    TEST_f_l (lround, 0x1.fffffep+23, 16777215),
+    TEST_f_l (lround, -0x1.fffffep+23, -16777215),
+#endif
+    END_DATA (lround)
+  };
+
 static void
 lround_test (void)
 {
-  /* TODO: missing +/-Inf as well as qNaN tests.  */
-
   START (lround);
-
-  TEST_f_l (lround, 0, 0);
-  TEST_f_l (lround, minus_zero, 0);
-  TEST_f_l (lround, 0.2L, 0.0);
-  TEST_f_l (lround, -0.2L, 0);
-  TEST_f_l (lround, 0.5, 1);
-  TEST_f_l (lround, -0.5, -1);
-  TEST_f_l (lround, 0.8L, 1);
-  TEST_f_l (lround, -0.8L, -1);
-  TEST_f_l (lround, 1.5, 2);
-  TEST_f_l (lround, -1.5, -2);
-  TEST_f_l (lround, 22514.5, 22515);
-  TEST_f_l (lround, -22514.5, -22515);
-  TEST_f_l (lround, 1071930.0008, 1071930);
-#ifndef TEST_FLOAT
-  TEST_f_l (lround, 1073741824.01, 1073741824);
-# if LONG_MAX > 281474976710656
-  TEST_f_l (lround, 281474976710656.025, 281474976710656);
-  TEST_f_l (lround, 18014398509481974, 18014398509481974);
-# endif
-  TEST_f_l (lround, 2097152.5, 2097153);
-  TEST_f_l (lround, -2097152.5, -2097153);
-  /* nextafter(0.5,-1)  */
-  TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
-  /* nextafter(-0.5,1)  */
-  TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
-#else
-  /* nextafter(0.5,-1)  */
-  TEST_f_l (lround, 0x1.fffffp-2, 0);
-  /* nextafter(-0.5,1)  */
-  TEST_f_l (lround, -0x1.fffffp-2, 0);
-  TEST_f_l (lround, 0x1.fffffep+23, 16777215);
-  TEST_f_l (lround, -0x1.fffffep+23, -16777215);
-#endif
+  RUN_TEST_LOOP_f_l (lround, lround_test_data, );
   END (lround);
 }
 
@@ -11411,7 +11517,7 @@
   TEST_f_L (llround, -1.5, -2);
   TEST_f_L (llround, 22514.5, 22515);
   TEST_f_L (llround, -22514.5, -22515);
-  TEST_f_l (llround, 1071930.0008, 1071930);
+  TEST_f_L (llround, 1071930.0008, 1071930);
 #ifndef TEST_FLOAT
   TEST_f_L (llround, 2097152.5, 2097153);
   TEST_f_L (llround, -2097152.5, -2097153);
@@ -11913,14 +12019,14 @@
     TEST_ff_f (pow, 0x1p-72L, 0, 1),
     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
 
-    TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@@ -12269,9 +12375,9 @@
 #endif
     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
 
-    TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
@@ -12370,9 +12476,9 @@
 #endif
     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
 
-    TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
     /* Allow inexact results to be considered to underflow.  */
@@ -13400,23 +13506,27 @@
 }
 
 
+static const struct test_f_i_data signbit_test_data[] =
+  {
+    START_DATA (signbit),
+    /* TODO: missing qNaN tests.  */
+    TEST_f_b (signbit, 0, 0),
+    TEST_f_b (signbit, minus_zero, 1),
+    TEST_f_b (signbit, plus_infty, 0),
+    TEST_f_b (signbit, minus_infty, 1),
+
+    /* signbit (x) != 0 for x < 0.  */
+    TEST_f_b (signbit, -1, 1),
+    /* signbit (x) == 0 for x >= 0.  */
+    TEST_f_b (signbit, 1, 0),
+    END_DATA (signbit)
+  };
+
 static void
 signbit_test (void)
 {
-  /* TODO: missing qNaN tests.  */
-
   START (signbit);
-
-  TEST_f_b (signbit, 0, 0);
-  TEST_f_b (signbit, minus_zero, 1);
-  TEST_f_b (signbit, plus_infty, 0);
-  TEST_f_b (signbit, minus_infty, 1);
-
-  /* signbit (x) != 0 for x < 0.  */
-  TEST_f_b (signbit, -1, 1);
-  /* signbit (x) == 0 for x >= 0.  */
-  TEST_f_b (signbit, 1, 0);
-
+  RUN_TEST_LOOP_f_b_tg (signbit, signbit_test_data, );
   END (signbit);
 }
 
@@ -13817,9 +13927,9 @@
     TEST_f_f (sqrt, minus_zero, minus_zero),
 
     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
-    TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (sqrt, 2209, 47),
     TEST_f_f (sqrt, 4, 2),
@@ -14743,8 +14853,8 @@
   {
     START_DATA (y0),
     /* y0 is the Bessel function of the second kind of order 0 */
-    TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
-    TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
+    TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (y0, 0.0, minus_infty),
     TEST_f_f (y0, qnan_value, qnan_value),
     TEST_f_f (y0, plus_infty, 0),
@@ -14807,8 +14917,8 @@
   {
     START_DATA (y1),
     /* y1 is the Bessel function of the second kind of order 1 */
-    TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
-    TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
+    TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (y1, 0.0, minus_infty),
     TEST_f_f (y1, plus_infty, 0),
     TEST_f_f (y1, qnan_value, qnan_value),
@@ -14872,8 +14982,8 @@
     START_DATA (yn),
     /* yn is the Bessel function of the second kind of order n */
     /* yn (0, x) == y0 (x)  */
-    TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
-    TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
+    TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_if_f (yn, 0, 0.0, minus_infty),
     TEST_if_f (yn, 0, qnan_value, qnan_value),
     TEST_if_f (yn, 0, plus_infty, 0),
@@ -14887,7 +14997,7 @@
     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
 
     /* yn (1, x) == y1 (x)  */
-    TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
+    TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_if_f (yn, 1, 0.0, minus_infty),
     TEST_if_f (yn, 1, plus_infty, 0),
     TEST_if_f (yn, 1, qnan_value, qnan_value),

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Thu May 16 00:02:10 2013
@@ -1,3 +1,9 @@
+2013-05-14  Andreas Jaeger  <aj@xxxxxxx>
+
+	[BZ #10686]
+	* sysdeps/x86_64/tls.h (struct tcbhead_t): Add __private_ss field.
+	* sysdeps/i386/tls.h (struct tcbhead_t): Likewise.
+
 2013-05-09  Andi Kleen  <ak@xxxxxxxxxxxxxxx>
 
 	* tst-mutex8.c (do_test): Check for ENABLE_PI.

Modified: fsf/trunk/libc/nptl/sysdeps/i386/tls.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/i386/tls.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/i386/tls.h Thu May 16 00:02:10 2013
@@ -59,7 +59,9 @@
   int __unused1;
 #endif
   /* Reservation of some values for the TM ABI.  */
-  void *__private_tm[5];
+  void *__private_tm[4];
+  /* GCC split stack support.  */
+  void *__private_ss;
 } tcbhead_t;
 
 # define TLS_MULTIPLE_THREADS_IN_TCB 1

Modified: fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h Thu May 16 00:02:10 2013
@@ -69,7 +69,9 @@
 # endif
   int rtld_must_xmm_save;
   /* Reservation of some values for the TM ABI.  */
-  void *__private_tm[5];
+  void *__private_tm[4];
+  /* GCC split stack support.  */
+  void *__private_ss;
   long int __unused2;
   /* Have space for the post-AVX register size.  */
   __128bits rtld_savespace_sse[8][4] __attribute__ ((aligned (32)));

Modified: fsf/trunk/libc/ports/ChangeLog.hppa
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.hppa (original)
+++ fsf/trunk/libc/ports/ChangeLog.hppa Thu May 16 00:02:10 2013
@@ -1,3 +1,17 @@
+2013-05-15  Carlos O'Donell  <carlos@xxxxxxxxxx>
+
+	* sysdeps/hppa/fpu/libm-test-ulps: Remove old values for ceil, floor,
+	rint, round, trunc, llrint, and llround.
+
+	* sysdeps/hppa/fpu/libm-test-ulps: Regenerate.
+
+2013-05-15  Guy Martin  <gmsoft@xxxxxxxxxxxx>
+	    Carlos O'Donell  <carlos@xxxxxxxxxx>
+
+	[BZ# 15000]
+	* ports/sysdeps/hppa/fpu/fpu_control.h (_FPU_GETCW): Set cw.
+	(_FPU_SETCW): Pass address to fldd.
+
 2013-04-02  Thomas Schwinge  <thomas@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/hppa/math_private.h: New file.

Modified: fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h (original)
+++ fsf/trunk/libc/ports/sysdeps/hppa/fpu/fpu_control.h Thu May 16 00:02:10 2013
@@ -49,7 +49,7 @@
   __asm__ ("fstd %%fr0,0(%1)\n\t"						\
            "fldd 0(%1),%%fr0\n\t"						\
 	   : "=m" (__fullfp.__fpreg) : "r" (&__fullfp.__fpreg) : "%r0");	\
-  __fullfp.__halfreg[0];							\
+  cw = __fullfp.__halfreg[0];							\
 })
 
 #define _FPU_SETCW(cw) \
@@ -57,7 +57,7 @@
   union { __extension__ unsigned long long __fpreg; unsigned int __halfreg[2]; } __fullfp;	\
   __fullfp.__halfreg[0] = cw;							\
   __asm__ ("fldd 0(%1),%%fr0\n\t"						\
-	   : : "m" (__fullfp.__fpreg), "r" (__fullfp.__fpreg) : "%r0" );	\
+	   : : "m" (__fullfp.__fpreg), "r" (&__fullfp.__fpreg) : "%r0" );	\
 })
 
 /* Default control word set at startup.  */

Modified: fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/ports/sysdeps/hppa/fpu/libm-test-ulps Thu May 16 00:02:10 2013
@@ -1,9 +1,80 @@
 # Begin of automatic generation
+
+# acos_downward
+Test "acos_downward (-0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_downward (-0.5) == M_PI_6l*4.0":
+double: 1
+idouble: 1
+Test "acos_downward (-1) == pi":
+float: 1
+ifloat: 1
+Test "acos_downward (0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_downward (0.5) == M_PI_6l*2.0":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# acos_towardzero
+Test "acos_towardzero (-0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_towardzero (-0.5) == M_PI_6l*4.0":
+double: 1
+idouble: 1
+Test "acos_towardzero (-1) == pi":
+float: 1
+ifloat: 1
+Test "acos_towardzero (0) == pi/2":
+float: 1
+ifloat: 1
+Test "acos_towardzero (0.5) == M_PI_6l*2.0":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# asin_downward
+Test "asin_downward (-0.5) == -pi/6":
+double: 1
+idouble: 1
+Test "asin_downward (0.5) == pi/6":
+double: 1
+idouble: 1
+Test "asin_downward (1.0) == pi/2":
+float: 1
+ifloat: 1
+
+# asin_towardzero
+Test "asin_towardzero (-0.5) == -pi/6":
+double: 1
+idouble: 1
+Test "asin_towardzero (-1.0) == -pi/2":
+float: 1
+ifloat: 1
+Test "asin_towardzero (0.5) == pi/6":
+double: 1
+idouble: 1
+Test "asin_towardzero (1.0) == pi/2":
+float: 1
+ifloat: 1
+
+# asin_upward
+Test "asin_upward (-1.0) == -pi/2":
+float: 1
+ifloat: 1
 
 # atan2
 Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
 float: 1
 ifloat: 1
+Test "atan2 (-max_value, -min_value) == -pi/2":
+float: 1
+ifloat: 1
 Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
 float: 1
 ifloat: 1
@@ -16,12 +87,1611 @@
 float: 1
 ifloat: 1
 
+# cacos
+Test "Imaginary part of: cacos (+0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (+0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (+0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0 + 0.5 i) == pi/2 - 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 + 1.0 i) == pi/2 - 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 + 1.5 i) == pi/2 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0 - 0.5 i) == pi/2 + 0.4812118250596034474977589134243684231352 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 - 1.0 i) == pi/2 + 0.8813735870195430252326093249797923090282 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0 - 1.5 i) == pi/2 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.25 + 1.0 i) == 1.747098759571863549650000258275841544745 - 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.25 - 1.0 i) == 1.747098759571863549650000258275841544745 + 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 - 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i) == 2.094395102393195492308428922186335256131 - 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i) == 2.094395102393195492308428922186335256131 - 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i) == 2.094395102393190022547898764614298351924 - 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.5 + 1.0 i) == 1.920235389652109912858733517715121394831 - 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i) == 2.094395102393195492308428922186335256131 + 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i) == 2.094395102393195492308428922186335256131 + 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i) == 2.094395102393195492308428922186335256131 + 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i) == 2.094395102393190022547898764614298351924 + 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0.5 - 1.0 i) == 1.920235389652109912858733517715121394831 + 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 3.141592634635223399311902261000251614142 - 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 3.141592634635223399311902261000251614142 + 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i) == 3.141153467203602189751698864505105063797 - 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i) == 3.141153467203602189751698864505105063797 + 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i) == 3.141370441751352383825802745874586120521 - 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i) == 3.141370441751352383825802745874586120521 + 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i) == 1.572134236154454360143880041170803681211 - 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i) == 1.572134236154454360143880041170803681211 + 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691640832196834 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691640832196834 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442101 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i) == 1.570796326794896619231321691639751442101 - 8.813735448726938863015878255140556727969e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 - 8.813736713132375348727889167749389235161e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i) == 1.570796326794896619231321691639751442101 - 2.846900380897727558361783801085126250967e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i) == 1.570796326794896619231321691639751442101 - 1.192092895507809676556842485683592032154e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442101 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442100 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442101 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i) == 1.570796326794896619231321691639751442101 + 8.813735448726938863015878255140556727969e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i) == 1.570796326794896619231321691639751442101 + 8.813736713132375348727889167749389235161e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i) == 1.570796326794896619231321691639751442101 + 2.846900380897727558361783801085126250967e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i) == 1.570796326794896619231321691639751442101 + 1.192092895507809676556842485683592032154e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442101 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442100 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i) == 1.570796328070826603447840231892468927106 - 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i) == 1.570796328070826603447840231892468927106 + 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 + 0.0 i) == 1.570796326794896619231321691639776094002 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i) == 1.570796326794896619231321691639773491431 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i) == 1.570796326794896619231321691639776094002 - 2.465190328815661891911651766508706967729e-32 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 - 0.0 i) == 1.570796326794896619231321691639776094002 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i) == 1.570796326794896619231321691639773491431 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i) == 1.570796326794896619231321691639776094002 + 2.465190328815661891911651766508706967729e-32 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 + 0.0 i) == 1.570796326794896619231321691639751634692 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751614359 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i) == 1.570796326794896619231321691639751634692 - 1.925929944387235853055977942584927318538e-34 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 - 0.0 i) == 1.570796326794896619231321691639751634692 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751614359 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i) == 1.570796326794896619231321691639751634692 + 1.925929944387235853055977942584927318538e-34 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 + 0.0 i) == 1.570796446004186170012854035955502877351 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i) == 1.570796433418926613232299739606181733819 - 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 - 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i) == 1.570796446004186170012854035955502877351 - 2.846900380897747786805634596726756660388e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i) == 1.570796446004186170012007003008248567984 - 1.192092895507818146886315028596704749235e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 - 0.0 i) == 1.570796446004186170012854035955502877351 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i) == 1.570796433418926613232299739606181733819 + 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i) == 1.570796411088596153167306681647360823228 + 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i) == 1.570796446004186170012854035955502877351 + 2.846900380897747786805634596726756660388e-39 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i) == 1.570796446004186170012007003008248567984 + 1.192092895507818146886315028596704749235e-7 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 + 0.0 i) == 1.570796326794896841275926616671059526825 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i) == 1.570796326794896817834053951421591208280 - 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i) == 1.570796326794896841275926616671059526825 - 2.220446049250313080847263336181677117148e-16 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 - 0.0 i) == 1.570796326794896841275926616671059526825 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i) == 1.570796326794896817834053951421591208280 + 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i) == 1.570796326794896841275926616671059526825 + 2.220446049250313080847263336181677117148e-16 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 + 0.0 i) == 1.570796326794896619339741908888301885499 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i) == 1.570796326794896619328295682000973043547 - 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i) == 1.570796326794896619339741908888301885499 - 1.084202172485504434007452800869941711430e-19 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 - 0.0 i) == 1.570796326794896619339741908888301885499 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i) == 1.570796326794896619328295682000973043547 + 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i) == 1.570796326794896619339741908888301885499 + 1.084202172485504434007452800869941711430e-19 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 + 0.5 i) == 2.466703808003786858297978415967328452322 - 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 - 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-1.0 + 0x1p50 i) == 1.570796326794897507409741391764983781004 - 3.535050620855721078027883819436759661753e1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 - 0.5 i) == 2.466703808003786858297978415967328452322 + 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i) == 3.098101355958774410750062883737683164607 + 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-1.0 - 0x1p50 i) == 1.570796326794897507409741391764983781004 + 3.535050620855721078027883819436759661753e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (-2 - 3 i) == 2.1414491111159960199416055713254211 + 1.9833870299165354323470769028940395 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.25 + 1.0 i) == 1.394493894017929688812643125003661339452 - 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.25 - 1.0 i) == 1.394493894017929688812643125003661339452 + 8.924633639033482359562124741744951972772e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0.5 + +0 i) == 1.047197551196597746154214461093167628066 - 0 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 - 6.222508863508420569166420770843207333493e-309 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 - 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1p-105 i) == 1.047197551196597746154214461093167628066 - 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1p-112 i) == 1.047197551196597746154214461093167628066 - 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 + 0x1p-23 i) == 1.047197551196603215914744618665204532273 - 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-52 i) == 1.047197551196597746154214461093186605110 - 2.563950248511418570403591756798643804971e-16 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 0x1p-63 i) == 1.047197551196597746154214461093167628070 - 1.251928832280966098829878787499365228659e-19 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.5 + 1.0 i) == 1.221357263937683325603909865564381489366 - 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0 i) == 1.047197551196597746154214461093167628066 + +0 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1.fp-1025 i) == 1.047197551196597746154214461093167628066 + 6.222508863508420569166420770843207333493e-309 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i) == 1.047197551196597746154214461093167628066 + 3.287317402534702257036015056278368274737e-39 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1p-105 i) == 1.047197551196597746154214461093167628066 + 2.846556599890768890940941645338546615370e-32 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1p-112 i) == 1.047197551196597746154214461093167628066 + 2.223872343664663196047610660420739543258e-34 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0.5 - 0x1p-23 i) == 1.047197551196603215914744618665204532273 + 1.376510308240943236356088341381173571841e-7 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-52 i) == 1.047197551196597746154214461093186605110 + 2.563950248511418570403591756798643804971e-16 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 0x1p-63 i) == 1.047197551196597746154214461093167628070 + 1.251928832280966098829878787499365228659e-19 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0.5 - 1.0 i) == 1.221357263937683325603909865564381489366 + 9.261330313501824245501244453057873152694e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 - 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.895456983915074112227925127005564372844e-8 + 1.171456840272878582596796205397918831268e-8 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i) == 3.452669847162035876032494826387364972849e-4 - 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i) == 3.452669847162035876032494826387364972849e-4 - 8.245504387859737323891843603996428534945e-36 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 - 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i) == 3.452669847162035876032494826387364972849e-4 + 0.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i) == 3.452669847162035876032494826387364972849e-4 + 8.245504387859737323891843603996428534945e-36 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i) == 4.391863861910487109445187743978204002614e-4 + 2.714321200917194650737217746780928423385e-4 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 - 2.315303644582684770975188768022139415020e-8 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i) == 9.590301705980041385828904092662391018164e-9 + 2.315303644582684770975188768022139415020e-8 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 - 5.364668491573609633134147164031476452679e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 - 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 + 5.364668491573609633134147164031476452679e-4 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i) == 2.222118384408546368406374049167636760903e-4 + 5.364668491573609633134147164031476452679e-4 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i) == 1.569458417435338878318763342108699202986 - 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i) == 1.569458417435338878318763342108699202986 + 8.813742198809567991336704287826445879025e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i) == 1.570796326794896619231321691638670687364 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i) == 1.570796326794896619231321691638670687364 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i) == 1.570796326794896619231321691639751442099 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i) == 1.570796326794896619231321691639751442099 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i) == 1.570796326794896619231321691639751442099 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i) == 1.570796326794896619231321691639751442099 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i) == 1.570796326794896619231321691639751442096 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i) == 1.570796326794896619231321691639751442097 - 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i) == 1.570796326794896619231321691639751442097 - 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i) == 1.570796326794896619231321691639751442096 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i) == 1.570796326794896619231321691639751442097 + 8.813735870195430252326093249797923090282e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i) == 1.570796326794896619231321691639751442097 + 1.194763217287109304111930828519090523536 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i) == 1.570796325518966635014803151387033957091 - 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i) == 1.570796325518966635014803151387033957091 + 8.813735870195430258081932989769495326854e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i) == 7.853981633974483096156608458198757210493e-1 - 7.107906849659093345062145442726115449315e2 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i) == 7.853981633974483096156608458198757210493e-1 - 8.973081118419833726837456344608533993585e1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1p-105 + 0.5 i) == 1.570796326794896619231321691639729392766 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-105 - 0.5 i) == 1.570796326794896619231321691639729392766 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-112 + 0.5 i) == 1.570796326794896619231321691639751269838 - 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-112 - 0.5 i) == 1.570796326794896619231321691639751269838 + 4.812118250596034474977589134243684231352e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-23 + 0.5 i) == 1.570796220170866625230343643673321150378 - 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 - 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1p-23 - 0.5 i) == 1.570796220170866625230343643673321150378 + 4.812118250596059896127318386463676808798e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i) == 1.570796242501197085295336701632142060969 + 8.813735448726963984495965873956465777250e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacos (0x1p-52 + 0.5 i) == 1.570796326794896420628589431857911675917 - 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-52 - 0.5 i) == 1.570796326794896420628589431857911675917 + 4.812118250596034474977589134243772428682e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-63 + 0.5 i) == 1.570796326794896619134347701278529840650 - 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (0x1p-63 - 0.5 i) == 1.570796326794896619134347701278529840650 + 4.812118250596034474977589134243684231373e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 + 0.25 i) == 4.890443302710802929202843732146540079124e-1 - 5.097911466811016354623559941115413499164e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (1.0 + 0.5 i) == 6.748888455860063801646649673121744318756e-1 - 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 - 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 - 0.25 i) == 4.890443302710802929202843732146540079124e-1 + 5.097911466811016354623559941115413499164e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacos (1.0 - 0.5 i) == 6.748888455860063801646649673121744318756e-1 + 7.328576759736452608886724437653071523305e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i) == 4.349129763101882771258049954181971959031e-2 + 4.350501469856803800217957402220976497152e-2 i":
+float: 1
+ifloat: 1
+
 # cacosh
+Test "Real part of: cacosh (+0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (+0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (+0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0 + 0.5 i) == 0.4812118250596034474977589134243684231352 + pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 + 1.0 i) == 0.8813735870195430252326093249797923090282 + pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 + 1.5 i) == 1.194763217287109304111930828519090523536 + pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0 - 0.5 i) == 0.4812118250596034474977589134243684231352 - pi/2 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 - 1.0 i) == 0.8813735870195430252326093249797923090282 - pi/2 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0 - 1.5 i) == 1.194763217287109304111930828519090523536 - pi/2 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacosh (-0.25 + 1.0 i) == 8.924633639033482359562124741744951972772e-1 + 1.747098759571863549650000258275841544745 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cacosh (-0.25 - 1.0 i) == 8.924633639033482359562124741744951972772e-1 - 1.747098759571863549650000258275841544745 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 + 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 + 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 + 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 + 2.094395102393190022547898764614298351924 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacosh (-0.5 + 1.0 i) == 9.261330313501824245501244453057873152694e-1 + 1.920235389652109912858733517715121394831 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i) == 3.287317402534702257036015056278368274737e-39 - 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 0x1p-105 i) == 2.846556599890768890940941645338546615370e-32 - 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 0x1p-112 i) == 2.223872343664663196047610660420739543258e-34 - 2.094395102393195492308428922186335256131 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 0x1p-23 i) == 1.376510308240943236356088341381173571841e-7 - 2.094395102393190022547898764614298351924 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: cacosh (-0.5 - 1.0 i) == 9.261330313501824245501244453057873152694e-1 - 1.920235389652109912858733517715121394831 i":
+float: 1
+ifloat: 1
+Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 + 3.141592634635223399311902261000251614142 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i) == 1.171456840272878582596796205397918831268e-8 - 3.141592634635223399311902261000251614142 i":
+double: 1
+idouble: 1
+Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 + 3.141153467203602189751698864505105063797 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i) == 2.714321200917194650737217746780928423385e-4 - 3.141153467203602189751698864505105063797 i":
+float: 2
+ifloat: 2
+Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i) == 5.364668491573609633134147164031476452679e-4 + 3.141370441751352383825802745874586120521 i":
+float: 1
+ifloat: 1

[... 4352 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits