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

[Commits] r23090 - in /fsf/trunk/libc: ./ benchtests/ math/ scripts/ sysdeps/ieee754/dbl-64/ sysdeps/powerpc/fpu/



Author: eglibc
Date: Sat May 18 00:02:11 2013
New Revision: 23090

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

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/benchtests/bench-modf.c
    fsf/trunk/libc/math/gen-libm-test.pl
    fsf/trunk/libc/math/libm-test.inc
    fsf/trunk/libc/scripts/bench.pl
    fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_remainder.c
    fsf/trunk/libc/sysdeps/powerpc/fpu/e_hypot.c
    fsf/trunk/libc/sysdeps/powerpc/fpu/e_hypotf.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat May 18 00:02:11 2013
@@ -1,3 +1,130 @@
+2013-05-17  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #15480]
+	[BZ #15485]
+	* sysdeps/ieee754/dbl-64/e_remainder.c (__ieee754_remainder): For
+	main case of finite arguments, set rounding mode to FE_TONEAREST
+	and discard exceptions.
+	* math/libm-test.inc (remainder_test_data): Disallow "inexact"
+	exceptions.
+	(remainder_tonearest_test_data): New variable.
+	(remainder_test_tonearest): New function.
+	(remainder_towardzero_test_data): New variable.
+	(remainder_test_towardzero): New function.
+	(remainder_downward_test_data): New variable.
+	(remainder_test_downward): New function.
+	(remainder_upward_test_data): New variable.
+	(remainder_test_upward): New function.
+	(main): Call the new test functions.
+
+	* math/libm-test.inc (struct test_f_f1_data): Remove field
+	extra_init.
+	(struct test_fF_f1_data): Likewise.
+	(struct test_ffI_f1_data): Likewise.
+	(RUN_TEST_f_f1): Remove argument EXTRA_INIT.  Initialize EXTRA_VAR
+	based on value of EXTRA_EXPECTED.
+	(RUN_TEST_LOOP_f_f1): Update call to RUN_TEST_f_f1.
+	(RUN_TEST_fF_f1): Remove argument EXTRA_INIT.  Initialize
+	EXTRA_VAR based on value of EXTRA_EXPECTED.
+	(RUN_TEST_LOOP_fF_f1): Update call to RUN_TEST_fF_f1.
+	(RUN_TEST_fI_f1): Remove argument EXTRA_INIT.  Initialize
+	EXTRA_VAR based on value of EXTRA_EXPECTED.
+	(RUN_TEST_LOOP_fI_f1): Update call to RUN_TEST_fI_f1.
+	(RUN_TEST_ffI_f1): Remove argument EXTRA_INIT.  Initialize
+	EXTRA_VAR based on value of EXTRA_EXPECTED.
+	(RUN_TEST_LOOP_ffI_f1): Update call to RUN_TEST_ffI_f1.
+	* math/gen-libm-test.pl (parse_args): Don't output initializers
+	for extra output values.
+
+	* math/libm-test.inc (check_int): Expect result to be exactly
+	equal to expected value and do not handle ulps.
+	(check_long): Likewise.
+	(check_longlong): Likewise.
+
+	* math/libm-test.inc (ceil_test_data): Test for "inexact"
+	exceptions.
+	(cimag_test_data): Likewise.
+	(conj_test_data): Likewise.
+	(copysign_test_data): Likewise.
+	(cproj_test_data): Likewise.
+	(creal_test_data): Likewise.
+	(fabs_test_data): Likewise.
+	(fdim_test_data): Likewise.
+	(finite_test_data): Likewise.
+	(floor_test_data): Likewise.
+	(fmax_test_data): Likewise.
+	(fmin_test_data): Likewise.
+	(fmod_test_data): Likewise.
+	(fpclassify_test_data): Likewise.
+	(frexp_test_data): Likewise.
+	(ilogb_test_data): Likewise.
+	(isfinite_test_data): Likewise.
+	(isgreater_test_data): Likewise.
+	(isgreaterequal_test_data): Likewise.
+	(isinf_test_data): Likewise.
+	(isless_test_data): Likewise.
+	(islessequal_test_data): Likewise.
+	(islessgreater_test_data): Likewise.
+	(isnan_test_data): Likewise.
+	(isnormal_test_data): Likewise.
+	(issignaling_test_data): Likewise.
+	(isunordered_test_data): Likewise.
+	(ldexp_test_data): Likewise.
+	(lrint_test_data): Likewise.
+	(lrint_test_data) [TEST_FLOAT]: Disable one test.
+	(lrint_test_data) [!TEST_LDOUBLE]: Likewise.
+	(lrint_tonearest_test_data): Test for "inexact" exceptions.
+	(lrint_tonearest_test_data) [TEST_FLOAT]: Disable one test.
+	(lrint_tonearest_test_data) [!TEST_LDOUBLE]: Likewise.
+	(lrint_tonearest_test_data) [TEST_LDOUBLE]: Use "L" suffix on that
+	test input.
+	(lrint_towardzero_test_data): Test for "inexact" exceptions.
+	(lrint_towardzero_test_data) [TEST_FLOAT]: Disable one test.
+	(lrint_towardzero_test_data) [!TEST_LDOUBLE]: Likewise.
+	(lrint_towardzero_test_data) [TEST_LDOUBLE]: Use "L" suffix on
+	that test input.
+	(lrint_downward_test_data): Test for "inexact" exceptions.
+	(lrint_downward_test_data) [TEST_FLOAT]: Disable one test.
+	(lrint_downward_test_data) [!TEST_LDOUBLE]: Likewise.
+	(lrint_downward_test_data) [TEST_LDOUBLE]: Use "L" suffix on that
+	test input.
+	(lrint_upward_test_data): Test for "inexact" exceptions.
+	(lrint_upward_test_data) [TEST_LDOUBLE]: Use "L" suffix on one
+	test input.
+	(llrint_test_data): Test for "inexact" exceptions.
+	(llrint_test_data) [TEST_FLOAT]: Disable one test.
+	(llrint_tonearest_test_data): Test for "inexact" exceptions.
+	(llrint_tonearest_test_data) [TEST_FLOAT]: Disable one test.
+	(llrint_towardzero_test_data): Test for "inexact" exceptions.
+	(llrint_towardzero_test_data) [TEST_FLOAT]: Disable one test.
+	(llrint_downward_test_data): Test for "inexact" exceptions.
+	(llrint_downward_test_data) [TEST_FLOAT]: Disable one test.
+	(llrint_upward_test_data): Test for "inexact" exceptions.
+	(logb_test_data): Likewise.
+	(logb_downward_test_data): Likewise.
+	(nextafter_test_data): Likewise.
+	(nexttoward_test_data): Likewise.
+	(remainder_test_data): Likewise.
+	(remquo_test_data): Likewise.
+	(scalbn_test_data): Likewise.
+	(scalbln_test_data): Likewise.
+	(signbit_test_data): Likewise.
+	(sqrt_test_data): Likewise.
+	(significand_test_data): Likewise.
+
+2013-05-17  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	[BZ #15424]
+	* benchtests/bench-modf.c (struct args): Mark arg0 as
+	volatile.
+	* scripts/bench.pl: Mark members of struct args as volatile.
+
+2013-05-17  Adhemerval Zanella  <azanella@xxxxxxxxxxxxxxxxxx>
+
+	* sysdeps/powerpc/fpu/e_hypot.c (GET_TWO_FLOAT_WORD): Fix test for
+	negative infinity on POWER6 or lower.
+	* sysdeps/powerpc/fpu/e_hypotf.c (GET_TWO_FLOAT_WORD): Likewise.
+
 2013-05-16  Maciej W. Rozycki  <macro@xxxxxxxxxxxxxxxx>
 
 	[BZ #15442]

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Sat May 18 00:02:11 2013
@@ -17,7 +17,7 @@
   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, 15442, 15448.
+  15418, 15419, 15423, 15424, 15426, 15429, 15442, 15448, 15480, 15485.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).

Modified: fsf/trunk/libc/benchtests/bench-modf.c
==============================================================================
--- fsf/trunk/libc/benchtests/bench-modf.c (original)
+++ fsf/trunk/libc/benchtests/bench-modf.c Sat May 18 00:02:11 2013
@@ -21,7 +21,7 @@
 
 struct args
 {
-  double arg0;
+  volatile double arg0;
 } in[] =
 {
   {  42.42 },

Modified: fsf/trunk/libc/math/gen-libm-test.pl
==============================================================================
--- fsf/trunk/libc/math/gen-libm-test.pl (original)
+++ fsf/trunk/libc/math/gen-libm-test.pl Sat May 18 00:02:11 2013
@@ -345,7 +345,7 @@
 	$str = "";
 	$extra_expected = "0";
       }
-      $cline .= ", \"$str\", 123456789, $run_extra, $extra_expected";
+      $cline .= ", \"$str\", $run_extra, $extra_expected";
       if ($run_extra) {
 	$cline .= &new_test ($str, undef, 0);
       } else {
@@ -361,7 +361,7 @@
 	$str = "";
 	$extra_expected = "0";
       }
-      $cline .= ", \"$str\", 0, $run_extra, $extra_expected";
+      $cline .= ", \"$str\", $run_extra, $extra_expected";
       if ($run_extra) {
 	$cline .= &new_test ($str, undef, 0);
       } else {
@@ -377,7 +377,7 @@
 	$str = "";
 	$extra_expected = "0";
       }
-      $cline .= ", \"$str\", 123.456789, $run_extra, $extra_expected";
+      $cline .= ", \"$str\", $run_extra, $extra_expected";
       if ($run_extra) {
 	$cline .= &new_test ($str, undef, 0);
       } else {
@@ -393,7 +393,7 @@
 	$str = "";
 	$extra_expected = "0";
       }
-      $cline .= ", \"$str\", 123456789, $run_extra, $extra_expected";
+      $cline .= ", \"$str\", $run_extra, $extra_expected";
       if ($run_extra) {
 	$cline .= &new_test ($str, undef, 0);
       } else {

Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Sat May 18 00:02:11 2013
@@ -734,18 +734,14 @@
 check_int (const char *test_name, int computed, int expected, int max_ulp,
 	   int exceptions)
 {
-  int diff = computed - expected;
   int ok = 0;
   int errno_value = errno;
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   noTests++;
-  if (abs (diff) <= max_ulp)
+  if (computed == expected)
     ok = 1;
-
-  if (!ok)
-    print_ulps (test_name, diff);
 
   if (print_screen (ok))
     {
@@ -768,18 +764,14 @@
 check_long (const char *test_name, long int computed, long int expected,
 	    long int max_ulp, int exceptions)
 {
-  long int diff = computed - expected;
   int ok = 0;
   int errno_value = errno;
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   noTests++;
-  if (labs (diff) <= max_ulp)
+  if (computed == expected)
     ok = 1;
-
-  if (!ok)
-    print_ulps (test_name, diff);
 
   if (print_screen (ok))
     {
@@ -834,18 +826,14 @@
 		long long int max_ulp,
 		int exceptions)
 {
-  long long int diff = computed - expected;
   int ok = 0;
   int errno_value = errno;
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   noTests++;
-  if (llabs (diff) <= max_ulp)
+  if (computed == expected)
     ok = 1;
-
-  if (!ok)
-    print_ulps (test_name, diff);
 
   if (print_screen (ok))
     {
@@ -940,7 +928,6 @@
   FLOAT max_ulp;
   int exceptions;
   const char *extra_name;
-  int extra_init;
   int extra_test;
   int extra_expected;
   int extra_ulp;
@@ -953,7 +940,6 @@
   FLOAT max_ulp;
   int exceptions;
   const char *extra_name;
-  FLOAT extra_init;
   int extra_test;
   FLOAT extra_expected;
   FLOAT extra_ulp;
@@ -966,7 +952,6 @@
   FLOAT max_ulp;
   int exceptions;
   const char *extra_name;
-  int extra_init;
   int extra_test;
   int extra_expected;
   int extra_ulp;
@@ -1113,19 +1098,19 @@
 		    (ARRAY)[i].argc, (ARRAY)[i].expected,		\
 		    (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);		\
   ROUND_RESTORE_ ## ROUNDING_MODE
-#define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,		\
-		      MAX_ULP, EXCEPTIONS,				\
-		      EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,	\
-		      EXTRA_EXPECTED, EXTRA_ULP)			\
-  do									\
-    {									\
-      (EXTRA_VAR) = (EXTRA_INIT);					\
-      check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,		\
-		   MAX_ULP, EXCEPTIONS);				\
-      if (EXTRA_TEST)							\
-	check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,		\
-		   EXTRA_ULP, 0);					\
-    }									\
+#define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,	\
+		      MAX_ULP, EXCEPTIONS,			\
+		      EXTRA_NAME, EXTRA_VAR, EXTRA_TEST,	\
+		      EXTRA_EXPECTED, EXTRA_ULP)		\
+  do								\
+    {								\
+      (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;		\
+      check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,	\
+		   MAX_ULP, EXCEPTIONS);			\
+      if (EXTRA_TEST)						\
+	check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,	\
+		   EXTRA_ULP, 0);				\
+    }								\
   while (0)
 #define RUN_TEST_LOOP_f_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR)	\
   IF_ROUND_INIT_ ## ROUNDING_MODE					\
@@ -1133,17 +1118,16 @@
       RUN_TEST_f_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,	\
 		     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
 		     (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,	\
-		     EXTRA_VAR, (ARRAY)[i].extra_init,			\
-		     (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected,	\
-		     (ARRAY)[i].extra_ulp);				\
+		     EXTRA_VAR, (ARRAY)[i].extra_test,			\
+		     (ARRAY)[i].extra_expected, (ARRAY)[i].extra_ulp);	\
   ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,		\
 		       MAX_ULP, EXCEPTIONS,				\
-		       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,	\
+		       EXTRA_NAME, EXTRA_VAR, EXTRA_TEST,		\
 		       EXTRA_EXPECTED, EXTRA_ULP)			\
   do									\
     {									\
-      (EXTRA_VAR) = (EXTRA_INIT);					\
+      (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;			\
       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),	\
 		   EXPECTED, MAX_ULP, EXCEPTIONS);			\
       if (EXTRA_TEST)							\
@@ -1157,17 +1141,16 @@
       RUN_TEST_fF_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,	\
 		      (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
 		      (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,	\
-		      EXTRA_VAR, (ARRAY)[i].extra_init,			\
-		      (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected,	\
-		      (ARRAY)[i].extra_ulp);				\
+		      EXTRA_VAR, (ARRAY)[i].extra_test,			\
+		      (ARRAY)[i].extra_expected, (ARRAY)[i].extra_ulp);	\
   ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,		\
 		       MAX_ULP, EXCEPTIONS,				\
-		       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,	\
+		       EXTRA_NAME, EXTRA_VAR, EXTRA_TEST,		\
 		       EXTRA_EXPECTED, EXTRA_ULP)			\
   do									\
     {									\
-      (EXTRA_VAR) = (EXTRA_INIT);					\
+      (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;			\
       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),	\
 		   EXPECTED, MAX_ULP, EXCEPTIONS);			\
       if (EXTRA_TEST)							\
@@ -1181,17 +1164,16 @@
       RUN_TEST_fI_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,	\
 		      (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
 		      (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,	\
-		      EXTRA_VAR, (ARRAY)[i].extra_init,			\
-		      (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected,	\
-		      (ARRAY)[i].extra_ulp);				\
+		      EXTRA_VAR, (ARRAY)[i].extra_test,			\
+		      (ARRAY)[i].extra_expected, (ARRAY)[i].extra_ulp);	\
   ROUND_RESTORE_ ## ROUNDING_MODE
 #define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,	\
 			MAX_ULP, EXCEPTIONS,				\
-			EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,	\
+			EXTRA_NAME, EXTRA_VAR, EXTRA_TEST,		\
 			EXTRA_EXPECTED, EXTRA_ULP)			\
   do									\
     {									\
-      (EXTRA_VAR) = (EXTRA_INIT);					\
+      (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;			\
       check_float (TEST_NAME,						\
 		   FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),		\
 		   EXPECTED, MAX_ULP, EXCEPTIONS);			\
@@ -1208,8 +1190,7 @@
 		       (ARRAY)[i].arg1, (ARRAY)[i].arg2,		\
 		       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,		\
 		       (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,	\
-		       EXTRA_VAR, (ARRAY)[i].extra_init,		\
-		       (ARRAY)[i].extra_test,				\
+		       EXTRA_VAR, (ARRAY)[i].extra_test,		\
 		       (ARRAY)[i].extra_expected,			\
 		       (ARRAY)[i].extra_ulp);				\
   ROUND_RESTORE_ ## ROUNDING_MODE
@@ -5953,12 +5934,13 @@
 static const struct test_f_f_data ceil_test_data[] =
   {
     START_DATA (ceil),
-    TEST_f_f (ceil, 0.0, 0.0),
-    TEST_f_f (ceil, minus_zero, minus_zero),
-    TEST_f_f (ceil, plus_infty, plus_infty),
-    TEST_f_f (ceil, minus_infty, minus_infty),
-    TEST_f_f (ceil, qnan_value, qnan_value),
-
+    TEST_f_f (ceil, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (ceil, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (ceil, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (ceil, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (ceil, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+    /* Bug 15479: spurious "inexact" exception may occur.  */
     TEST_f_f (ceil, M_PIl, 4.0),
     TEST_f_f (ceil, -M_PIl, -3.0),
     TEST_f_f (ceil, 0.1, 1.0),
@@ -6162,13 +6144,13 @@
 static const struct test_c_f_data cimag_test_data[] =
   {
     START_DATA (cimag);
-    TEST_c_f (cimag, 1.0, 0.0, 0.0),
-    TEST_c_f (cimag, 1.0, minus_zero, minus_zero),
-    TEST_c_f (cimag, 1.0, qnan_value, qnan_value),
-    TEST_c_f (cimag, qnan_value, qnan_value, qnan_value),
-    TEST_c_f (cimag, 1.0, plus_infty, plus_infty),
-    TEST_c_f (cimag, 1.0, minus_infty, minus_infty),
-    TEST_c_f (cimag, 2.0, 3.0, 3.0),
+    TEST_c_f (cimag, 1.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_f (cimag, 1.0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_c_f (cimag, 1.0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_c_f (cimag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_c_f (cimag, 1.0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_c_f (cimag, 1.0, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_c_f (cimag, 2.0, 3.0, 3.0, NO_INEXACT_EXCEPTION),
     END_DATA (cimag);
   };
 
@@ -6622,13 +6604,13 @@
 static const struct test_c_c_data conj_test_data[] =
   {
     START_DATA (conj),
-    TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
-    TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
-    TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
-    TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
-    TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
-    TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
-    TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
+    TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0, NO_INEXACT_EXCEPTION),
+    TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0, NO_INEXACT_EXCEPTION),
     END_DATA (conj)
   };
 
@@ -6644,26 +6626,26 @@
 static const struct test_ff_f_data copysign_test_data[] =
   {
     START_DATA (copysign),
-    TEST_ff_f (copysign, 0, 4, 0),
-    TEST_ff_f (copysign, 0, -4, minus_zero),
-    TEST_ff_f (copysign, minus_zero, 4, 0),
-    TEST_ff_f (copysign, minus_zero, -4, minus_zero),
-
-    TEST_ff_f (copysign, plus_infty, 0, plus_infty),
-    TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
-    TEST_ff_f (copysign, minus_infty, 0, plus_infty),
-    TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
-
-    TEST_ff_f (copysign, 0, plus_infty, 0),
-    TEST_ff_f (copysign, 0, minus_zero, minus_zero),
-    TEST_ff_f (copysign, minus_zero, plus_infty, 0),
-    TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
+    TEST_ff_f (copysign, 0, 4, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, 0, -4, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, minus_zero, 4, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, minus_zero, -4, minus_zero, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (copysign, plus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, minus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (copysign, 0, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, minus_zero, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
 
     /* XXX More correctly we would have to check the sign of the NaN.  */
-    TEST_ff_f (copysign, qnan_value, 0, qnan_value),
-    TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
-    TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
-    TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
+    TEST_ff_f (copysign, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
     END_DATA (copysign)
   };
 
@@ -6983,20 +6965,20 @@
 static const struct test_c_c_data cproj_test_data[] =
   {
     START_DATA (cproj),
-    TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
-    TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
-    TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
-    TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
-
-    TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
-
-    TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
-    TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
-    TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
-    TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
-
-    TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
-    TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
+    TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0, NO_INEXACT_EXCEPTION),
+
+    TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+    TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
+
+    TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0, NO_INEXACT_EXCEPTION),
     END_DATA (cproj)
   };
 
@@ -7012,13 +6994,13 @@
 static const struct test_c_f_data creal_test_data[] =
   {
     START_DATA (creal);
-    TEST_c_f (creal, 0.0, 1.0, 0.0),
-    TEST_c_f (creal, minus_zero, 1.0, minus_zero),
-    TEST_c_f (creal, qnan_value, 1.0, qnan_value),
-    TEST_c_f (creal, qnan_value, qnan_value, qnan_value),
-    TEST_c_f (creal, plus_infty, 1.0, plus_infty),
-    TEST_c_f (creal, minus_infty, 1.0, minus_infty),
-    TEST_c_f (creal, 2.0, 3.0, 2.0),
+    TEST_c_f (creal, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_c_f (creal, minus_zero, 1.0, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_c_f (creal, qnan_value, 1.0, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_c_f (creal, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_c_f (creal, plus_infty, 1.0, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_c_f (creal, minus_infty, 1.0, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_c_f (creal, 2.0, 3.0, 2.0, NO_INEXACT_EXCEPTION),
     END_DATA (creal);
   };
 
@@ -8047,15 +8029,15 @@
 static const struct test_f_f_data fabs_test_data[] =
   {
     START_DATA (fabs),
-    TEST_f_f (fabs, 0, 0),
-    TEST_f_f (fabs, minus_zero, 0),
-
-    TEST_f_f (fabs, plus_infty, plus_infty),
-    TEST_f_f (fabs, minus_infty, plus_infty),
-    TEST_f_f (fabs, qnan_value, qnan_value),
-
-    TEST_f_f (fabs, 38.0, 38.0),
-    TEST_f_f (fabs, -M_El, M_El),
+    TEST_f_f (fabs, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (fabs, minus_zero, 0, NO_INEXACT_EXCEPTION),
+
+    TEST_f_f (fabs, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (fabs, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (fabs, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+    TEST_f_f (fabs, 38.0, 38.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (fabs, -M_El, M_El, NO_INEXACT_EXCEPTION),
     END_DATA (fabs)
   };
 
@@ -8071,33 +8053,33 @@
 static const struct test_ff_f_data fdim_test_data[] =
   {
     START_DATA (fdim),
-    TEST_ff_f (fdim, 0, 0, 0),
-    TEST_ff_f (fdim, 9, 0, 9),
-    TEST_ff_f (fdim, 0, 9, 0),
-    TEST_ff_f (fdim, -9, 0, 0),
-    TEST_ff_f (fdim, 0, -9, 9),
-
-    TEST_ff_f (fdim, plus_infty, 9, plus_infty),
-    TEST_ff_f (fdim, plus_infty, -9, plus_infty),
-    TEST_ff_f (fdim, minus_infty, 9, 0),
-    TEST_ff_f (fdim, minus_infty, -9, 0),
-    TEST_ff_f (fdim, 9, minus_infty, plus_infty),
-    TEST_ff_f (fdim, -9, minus_infty, plus_infty),
-    TEST_ff_f (fdim, 9, plus_infty, 0),
-    TEST_ff_f (fdim, -9, plus_infty, 0),
-
-    TEST_ff_f (fdim, 0, qnan_value, qnan_value),
-    TEST_ff_f (fdim, 9, qnan_value, qnan_value),
-    TEST_ff_f (fdim, -9, qnan_value, qnan_value),
-    TEST_ff_f (fdim, qnan_value, 9, qnan_value),
-    TEST_ff_f (fdim, qnan_value, -9, qnan_value),
-    TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
-    TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
-    TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
-    TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
-    TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
-
-    TEST_ff_f (fdim, plus_infty, plus_infty, 0),
+    TEST_ff_f (fdim, 0, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, 9, 0, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, 0, 9, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, -9, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, 0, -9, 9, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fdim, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, minus_infty, 9, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, minus_infty, -9, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, 9, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, -9, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, 9, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, -9, plus_infty, 0, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fdim, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fdim, plus_infty, plus_infty, 0, NO_INEXACT_EXCEPTION),
     END_DATA (fdim)
   };
 
@@ -8113,13 +8095,13 @@
 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),
+    TEST_f_b (finite, 0, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (finite, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (finite, 10, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (finite, min_subnorm_value, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (finite, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (finite, minus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (finite, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (finite)
   };
 
@@ -8135,12 +8117,13 @@
 static const struct test_f_f_data floor_test_data[] =
   {
     START_DATA (floor),
-    TEST_f_f (floor, 0.0, 0.0),
-    TEST_f_f (floor, minus_zero, minus_zero),
-    TEST_f_f (floor, plus_infty, plus_infty),
-    TEST_f_f (floor, minus_infty, minus_infty),
-    TEST_f_f (floor, qnan_value, qnan_value),
-
+    TEST_f_f (floor, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (floor, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (floor, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (floor, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (floor, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+    /* Bug 15479: spurious "inexact" exception may occur.  */
     TEST_f_f (floor, M_PIl, 3.0),
     TEST_f_f (floor, -M_PIl, -4.0),
 
@@ -9186,34 +9169,34 @@
 static const struct test_ff_f_data fmax_test_data[] =
   {
     START_DATA (fmax),
-    TEST_ff_f (fmax, 0, 0, 0),
-    TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
-    TEST_ff_f (fmax, 9, 0, 9),
-    TEST_ff_f (fmax, 0, 9, 9),
-    TEST_ff_f (fmax, -9, 0, 0),
-    TEST_ff_f (fmax, 0, -9, 0),
-
-    TEST_ff_f (fmax, plus_infty, 9, plus_infty),
-    TEST_ff_f (fmax, 0, plus_infty, plus_infty),
-    TEST_ff_f (fmax, -9, plus_infty, plus_infty),
-    TEST_ff_f (fmax, plus_infty, -9, plus_infty),
-
-    TEST_ff_f (fmax, minus_infty, 9, 9),
-    TEST_ff_f (fmax, minus_infty, -9, -9),
-    TEST_ff_f (fmax, 9, minus_infty, 9),
-    TEST_ff_f (fmax, -9, minus_infty, -9),
-
-    TEST_ff_f (fmax, 0, qnan_value, 0),
-    TEST_ff_f (fmax, 9, qnan_value, 9),
-    TEST_ff_f (fmax, -9, qnan_value, -9),
-    TEST_ff_f (fmax, qnan_value, 0, 0),
-    TEST_ff_f (fmax, qnan_value, 9, 9),
-    TEST_ff_f (fmax, qnan_value, -9, -9),
-    TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
-    TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
-    TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
-    TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
-    TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
+    TEST_ff_f (fmax, 0, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, 9, 0, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, 0, 9, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, -9, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, 0, -9, 0, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmax, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmax, minus_infty, 9, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, minus_infty, -9, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, 9, minus_infty, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, -9, minus_infty, -9, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmax, 0, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, 9, qnan_value, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, -9, qnan_value, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, qnan_value, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, qnan_value, 9, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, qnan_value, -9, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
     END_DATA (fmax)
   };
 
@@ -9229,33 +9212,33 @@
 static const struct test_ff_f_data fmin_test_data[] =
   {
     START_DATA (fmin),
-    TEST_ff_f (fmin, 0, 0, 0),
-    TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
-    TEST_ff_f (fmin, 9, 0, 0),
-    TEST_ff_f (fmin, 0, 9, 0),
-    TEST_ff_f (fmin, -9, 0, -9),
-    TEST_ff_f (fmin, 0, -9, -9),
-
-    TEST_ff_f (fmin, plus_infty, 9, 9),
-    TEST_ff_f (fmin, 9, plus_infty, 9),
-    TEST_ff_f (fmin, plus_infty, -9, -9),
-    TEST_ff_f (fmin, -9, plus_infty, -9),
-    TEST_ff_f (fmin, minus_infty, 9, minus_infty),
-    TEST_ff_f (fmin, minus_infty, -9, minus_infty),
-    TEST_ff_f (fmin, 9, minus_infty, minus_infty),
-    TEST_ff_f (fmin, -9, minus_infty, minus_infty),
-
-    TEST_ff_f (fmin, 0, qnan_value, 0),
-    TEST_ff_f (fmin, 9, qnan_value, 9),
-    TEST_ff_f (fmin, -9, qnan_value, -9),
-    TEST_ff_f (fmin, qnan_value, 0, 0),
-    TEST_ff_f (fmin, qnan_value, 9, 9),
-    TEST_ff_f (fmin, qnan_value, -9, -9),
-    TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
-    TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
-    TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
-    TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
-    TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
+    TEST_ff_f (fmin, 0, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, 9, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, 0, 9, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, -9, 0, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, 0, -9, -9, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmin, plus_infty, 9, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, 9, plus_infty, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, plus_infty, -9, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, -9, plus_infty, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmin, 0, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, 9, qnan_value, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, -9, qnan_value, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, qnan_value, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, qnan_value, 9, 9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, qnan_value, -9, -9, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
     END_DATA (fmin)
   };
 
@@ -9272,38 +9255,38 @@
   {
     START_DATA (fmod),
     /* fmod (+0, y) == +0 for y != 0.  */
-    TEST_ff_f (fmod, 0, 3, 0),
+    TEST_ff_f (fmod, 0, 3, 0, NO_INEXACT_EXCEPTION),
 
     /* fmod (-0, y) == -0 for y != 0.  */
-    TEST_ff_f (fmod, minus_zero, 3, minus_zero),
+    TEST_ff_f (fmod, minus_zero, 3, minus_zero, NO_INEXACT_EXCEPTION),
 
     /* fmod (+inf, y) == qNaN plus invalid exception.  */
-    TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (fmod, plus_infty, 3, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     /* fmod (-inf, y) == qNaN plus invalid exception.  */
-    TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (fmod, minus_infty, 3, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     /* fmod (x, +0) == qNaN plus invalid exception.  */
-    TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (fmod, 3, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     /* fmod (x, -0) == qNaN plus invalid exception.  */
-    TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (fmod, 3, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
 
     /* fmod (x, +inf) == x for x not infinite.  */
-    TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
+    TEST_ff_f (fmod, 3.0, plus_infty, 3.0, NO_INEXACT_EXCEPTION),
     /* fmod (x, -inf) == x for x not infinite.  */
-    TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
-
-    TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
-
-    TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
-    TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
-    TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
-    TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
-
-    TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
+    TEST_ff_f (fmod, 3.0, minus_infty, 3.0, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmod, 6.5, 2.25L, 2.0L, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmod, -6.5, 2.25L, -2.0L, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmod, 6.5, -2.25L, 2.0L, NO_INEXACT_EXCEPTION),
+    TEST_ff_f (fmod, -6.5, -2.25L, -2.0L, NO_INEXACT_EXCEPTION),
+
+    TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero, NO_INEXACT_EXCEPTION),
 #ifndef TEST_FLOAT
-    TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
+    TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero, NO_INEXACT_EXCEPTION),
 #endif
 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
-    TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
+    TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero, NO_INEXACT_EXCEPTION),
 #endif
     END_DATA (fmod)
   };
@@ -9320,13 +9303,13 @@
 static const struct test_f_i_data fpclassify_test_data[] =
   {
     START_DATA (fpclassify),
-    TEST_f_i (fpclassify, qnan_value, FP_NAN),
-    TEST_f_i (fpclassify, plus_infty, FP_INFINITE),
-    TEST_f_i (fpclassify, minus_infty, FP_INFINITE),
-    TEST_f_i (fpclassify, plus_zero, FP_ZERO),
-    TEST_f_i (fpclassify, minus_zero, FP_ZERO),
-    TEST_f_i (fpclassify, 1000, FP_NORMAL),
-    TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL),
+    TEST_f_i (fpclassify, qnan_value, FP_NAN, NO_INEXACT_EXCEPTION),
+    TEST_f_i (fpclassify, plus_infty, FP_INFINITE, NO_INEXACT_EXCEPTION),
+    TEST_f_i (fpclassify, minus_infty, FP_INFINITE, NO_INEXACT_EXCEPTION),
+    TEST_f_i (fpclassify, plus_zero, FP_ZERO, NO_INEXACT_EXCEPTION),
+    TEST_f_i (fpclassify, minus_zero, FP_ZERO, NO_INEXACT_EXCEPTION),
+    TEST_f_i (fpclassify, 1000, FP_NORMAL, NO_INEXACT_EXCEPTION),
+    TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL, NO_INEXACT_EXCEPTION),
     END_DATA (fpclassify)
   };
 
@@ -9342,15 +9325,15 @@
 static const struct test_f_f1_data frexp_test_data[] =
   {
     START_DATA (frexp),
-    TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE),
-    TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE),
-    TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE),
-
-    TEST_fI_f1 (frexp, 0.0, 0.0, 0.0),
-    TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0),
-
-    TEST_fI_f1 (frexp, 12.8L, 0.8L, 4),
-    TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5),
+    TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE, NO_INEXACT_EXCEPTION),
+    TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE, NO_INEXACT_EXCEPTION),
+    TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE, NO_INEXACT_EXCEPTION),
+
+    TEST_fI_f1 (frexp, 0.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0, NO_INEXACT_EXCEPTION),
+
+    TEST_fI_f1 (frexp, 12.8L, 0.8L, 4, NO_INEXACT_EXCEPTION),
+    TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5, NO_INEXACT_EXCEPTION),
     END_DATA (frexp)
   };
 
@@ -9456,19 +9439,19 @@
 static const struct test_f_i_data ilogb_test_data[] =
   {
     START_DATA (ilogb),
-    TEST_f_i (ilogb, 1, 0),
-    TEST_f_i (ilogb, M_El, 1),
-    TEST_f_i (ilogb, 1024, 10),
-    TEST_f_i (ilogb, -2000, 10),
+    TEST_f_i (ilogb, 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_i (ilogb, M_El, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_i (ilogb, 1024, 10, NO_INEXACT_EXCEPTION),
+    TEST_f_i (ilogb, -2000, 10, NO_INEXACT_EXCEPTION),
 
     /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
-    TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_i (ilogb, 0.0, FP_ILOGB0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
-    TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     /* ilogb (inf) == INT_MAX plus invalid exception  */
-    TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_i (ilogb, plus_infty, INT_MAX, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     /* ilogb (-inf) == INT_MAX plus invalid exception  */
-    TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_i (ilogb, minus_infty, INT_MAX, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
     END_DATA (ilogb)
   };
 
@@ -9483,13 +9466,13 @@
 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),
+    TEST_f_b (isfinite, 0, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isfinite, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isfinite, 10, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isfinite, min_subnorm_value, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isfinite, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isfinite, minus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isfinite, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (isfinite)
   };
 
@@ -9504,22 +9487,22 @@
 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),
+    TEST_ff_i (isgreater, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreater, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (isgreater)
   };
 
@@ -9534,22 +9517,22 @@
 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),
+    TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (isgreaterequal)
   };
 
@@ -9564,13 +9547,13 @@
 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),
+    TEST_f_b (isinf, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isinf, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isinf, 10, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isinf, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isinf, plus_infty, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isinf, minus_infty, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isinf, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (isinf)
   };
 
@@ -9585,22 +9568,22 @@
 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),
+    TEST_ff_i (isless, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isless, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (isless)
   };
 
@@ -9615,22 +9598,22 @@
 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),
+    TEST_ff_i (islessequal, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, minus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, plus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, plus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessequal, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (islessequal)
   };
 
@@ -9645,22 +9628,22 @@
 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),
+    TEST_ff_i (islessgreater, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (islessgreater, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (islessgreater)
   };
 
@@ -9675,13 +9658,13 @@
 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),
+    TEST_f_b (isnan, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnan, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnan, 10, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnan, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnan, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnan, minus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnan, qnan_value, 1, NO_INEXACT_EXCEPTION),
     END_DATA (isnan)
   };
 
@@ -9696,13 +9679,13 @@
 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),
+    TEST_f_b (isnormal, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnormal, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnormal, 10, 1, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnormal, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnormal, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnormal, minus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (isnormal, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (isnormal)
   };
 
@@ -9717,13 +9700,13 @@
 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),
+    TEST_f_b (issignaling, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (issignaling, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (issignaling, 10, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (issignaling, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (issignaling, plus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (issignaling, minus_infty, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_b (issignaling, qnan_value, 0, NO_INEXACT_EXCEPTION),
     END_DATA (issignaling)
   };
 
@@ -9738,22 +9721,22 @@
 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),
+    TEST_ff_i (isunordered, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, minus_zero, qnan_value, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, plus_zero, qnan_value, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, qnan_value, minus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, qnan_value, plus_zero, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
+    TEST_ff_i (isunordered, qnan_value, qnan_value, 1, NO_INEXACT_EXCEPTION),
     END_DATA (isunordered)
   };
 
@@ -9928,18 +9911,18 @@
 static const struct test_fi_f_data ldexp_test_data[] =
   {
     START_DATA (ldexp),
-    TEST_fi_f (ldexp, 0, 0, 0),
-    TEST_fi_f (ldexp, minus_zero, 0, minus_zero),
-
-    TEST_fi_f (ldexp, plus_infty, 1, plus_infty),
-    TEST_fi_f (ldexp, minus_infty, 1, minus_infty),
-    TEST_fi_f (ldexp, qnan_value, 1, qnan_value),
-
-    TEST_fi_f (ldexp, 0.8L, 4, 12.8L),
-    TEST_fi_f (ldexp, -0.854375L, 5, -27.34L),
+    TEST_fi_f (ldexp, 0, 0, 0, NO_INEXACT_EXCEPTION),
+    TEST_fi_f (ldexp, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION),
+
+    TEST_fi_f (ldexp, plus_infty, 1, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_fi_f (ldexp, minus_infty, 1, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_fi_f (ldexp, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION),
+
+    TEST_fi_f (ldexp, 0.8L, 4, 12.8L, NO_INEXACT_EXCEPTION),
+    TEST_fi_f (ldexp, -0.854375L, 5, -27.34L, NO_INEXACT_EXCEPTION),
 
     /* ldexp (x, 0) == x.  */
-    TEST_fi_f (ldexp, 1.0L, 0L, 1.0L),
+    TEST_fi_f (ldexp, 1.0L, 0L, 1.0L, NO_INEXACT_EXCEPTION),
     END_DATA (ldexp)
   };
 
@@ -9993,22 +9976,22 @@
        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),
+    TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
+
 #ifndef TEST_FLOAT
-    TEST_f_l (lrint, 1073741824.01, 1073741824),
-# if LONG_MAX > 281474976710656
-    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+    TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
+# if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
+    TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (lrint)
@@ -10026,26 +10009,26 @@
 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),
+    TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.5L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.5L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.8L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.8L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
+
 #ifndef TEST_FLOAT
-    TEST_f_l (lrint, 1073741824.01, 1073741824),
-# if LONG_MAX > 281474976710656
-    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+    TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
+# if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
+    TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (lrint_tonearest)
@@ -10063,26 +10046,26 @@
 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),
+    TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.5L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.5L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.8L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.8L, 0, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
+
 #ifndef TEST_FLOAT
-    TEST_f_l (lrint, 1073741824.01, 1073741824),
-# if LONG_MAX > 281474976710656
-    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+    TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
+# if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
+    TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (lrint_towardzero)
@@ -10100,26 +10083,26 @@
 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),
+    TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.2L, -1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.5L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.5L, -1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.8L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.8L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -1.4L, -2, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -8388600.3L, -8388601, INEXACT_EXCEPTION),
+
 #ifndef TEST_FLOAT
-    TEST_f_l (lrint, 1073741824.01, 1073741824),
-# if LONG_MAX > 281474976710656
-    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+    TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
+# if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
+    TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (lrint_downward)
@@ -10137,26 +10120,26 @@
 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),
+    TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.2L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.5L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.5L, 0, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 0.8L, 1, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -0.8L, 0, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 1.4L, 2, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_l (lrint, 8388600.3L, 8388601, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
 
 #ifndef TEST_FLOAT
-    TEST_f_l (lrint, 1071930.0008, 1071931),
-    TEST_f_l (lrint, 1073741824.01, 1073741825),
+    TEST_f_l (lrint, 1071930.0008, 1071931, INEXACT_EXCEPTION),
+    TEST_f_l (lrint, 1073741824.01, 1073741825, INEXACT_EXCEPTION),
 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
-    TEST_f_l (lrint, 281474976710656.025, 281474976710656),
+    TEST_f_l (lrint, 281474976710656.025L, 281474976710657, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (lrint_upward)
@@ -10178,125 +10161,127 @@
        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 (llrint, 0.0, 0),
-    TEST_f_L (llrint, minus_zero, 0),
-    TEST_f_L (llrint, 0.2L, 0),
-    TEST_f_L (llrint, -0.2L, 0),
-
-    TEST_f_L (llrint, 1.4L, 1),
-    TEST_f_L (llrint, -1.4L, -1),
-
-    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, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
+
+#ifndef TEST_FLOAT
+    TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+#endif
 
     /* Test boundary conditions.  */
     /* 0x1FFFFF */
-    TEST_f_L (llrint, 2097151.0,2097151LL),
+    TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
     /* 0x800000 */
-    TEST_f_L (llrint, 8388608.0, 8388608LL),
+    TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
     /* 0x1000000 */
-    TEST_f_L (llrint, 16777216.0, 16777216LL),
+    TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
     /* 0x20000000000 */
-    TEST_f_L (llrint, 2199023255552.0, 2199023255552LL),
+    TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
     /* 0x40000000000 */
-    TEST_f_L (llrint, 4398046511104.0, 4398046511104LL),
+    TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
     /* 0x1000000000000 */
-    TEST_f_L (llrint, 281474976710656.0, 281474976710656LL),
+    TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
     /* 0x10000000000000 */
-    TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL),
+    TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
     /* 0x10000080000000 */
-    TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL),
+    TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
     /* 0x20000000000000 */
-    TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL),
+    TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
     /* 0x80000000000000 */
-    TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL),
+    TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
     /* 0x100000000000000 */
-    TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL),
+    TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
 #ifdef TEST_LDOUBLE
     /* The input can only be represented in long double.  */
-    TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL),
-    TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL),
-
-    TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL),
-    TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL),
+    TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL),
-    TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL),
-    TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL),
-    TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL),
-
-    TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL),
-    TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL),
-    TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL),
-    TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL),
-#endif
-
-    TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL),
-    TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL),
-
-    TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL),
-    TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL),
+    TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL, INEXACT_EXCEPTION),
+#endif
+
+    TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL),
-    TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL),
-    TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL),
-    TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL),
-
-    TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL),
-    TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL),
-    TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL),
-    TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL),
-#endif
-
-    TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL),
-    TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL),
-    TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL),
-    TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL),
-    TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL),
-
-    TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL),
-    TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL),
-    TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL),
-    TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL),
-    TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL),
+    TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL, INEXACT_EXCEPTION),
+#endif
+
+    TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL),
-    TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL),
-    TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL),
-    TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L),
-    TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL),
-    TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL),
-    TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL),
-    TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL),
+    TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (llrint)
@@ -10313,125 +10298,127 @@
 static const struct test_f_L_data llrint_tonearest_test_data[] =
   {
     START_DATA (llrint_tonearest),
-    TEST_f_L (llrint, 0.0, 0),
-    TEST_f_L (llrint, minus_zero, 0),
-    TEST_f_L (llrint, 0.2L, 0),
-    TEST_f_L (llrint, -0.2L, 0),
-
-    TEST_f_L (llrint, 1.4L, 1),
-    TEST_f_L (llrint, -1.4L, -1),
-
-    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, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
+
+#ifndef TEST_FLOAT
+    TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+#endif
 
     /* Test boundary conditions.  */
     /* 0x1FFFFF */
-    TEST_f_L (llrint, 2097151.0,2097151LL),
+    TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
     /* 0x800000 */
-    TEST_f_L (llrint, 8388608.0, 8388608LL),
+    TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
     /* 0x1000000 */
-    TEST_f_L (llrint, 16777216.0, 16777216LL),
+    TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
     /* 0x20000000000 */
-    TEST_f_L (llrint, 2199023255552.0, 2199023255552LL),
+    TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
     /* 0x40000000000 */
-    TEST_f_L (llrint, 4398046511104.0, 4398046511104LL),
+    TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
     /* 0x1000000000000 */
-    TEST_f_L (llrint, 281474976710656.0, 281474976710656LL),
+    TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
     /* 0x10000000000000 */
-    TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL),
+    TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
     /* 0x10000080000000 */
-    TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL),
+    TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
     /* 0x20000000000000 */
-    TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL),
+    TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
     /* 0x80000000000000 */
-    TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL),
+    TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
     /* 0x100000000000000 */
-    TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL),
+    TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
 #ifdef TEST_LDOUBLE
     /* The input can only be represented in long double.  */
-    TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL),
-    TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL),
-
-    TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL),
-    TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL),
+    TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL),
-    TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL),
-    TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL),
-    TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL),
-
-    TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL),
-    TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL),
-    TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL),
-    TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL),
-#endif
-
-    TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL),
-    TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL),
-
-    TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL),
-    TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL),
+    TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL, INEXACT_EXCEPTION),
+#endif
+
+    TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL),
-    TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL),
-    TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL),
-    TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL),
-    TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL),
-
-    TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL),
-    TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL),
-    TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL),
-    TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL),
-    TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL),
-#endif
-
-    TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL),
-    TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL),
-    TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL),
-    TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL),
-    TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL),
-
-    TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL),
-    TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL),
-    TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL),
-    TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL),
-    TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL),
+    TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL, INEXACT_EXCEPTION),
+#endif
+
+    TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL),
-    TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL),
-    TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL),
-    TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L),
-    TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL),
-    TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL),
-    TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL),
-    TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL),
-    TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL),
+    TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (llrint_tonearest)
@@ -10448,125 +10435,127 @@
 static const struct test_f_L_data llrint_towardzero_test_data[] =
   {
     START_DATA (llrint_towardzero),
-    TEST_f_L (llrint, 0.0, 0),
-    TEST_f_L (llrint, minus_zero, 0),
-    TEST_f_L (llrint, 0.2L, 0),
-    TEST_f_L (llrint, -0.2L, 0),
-
-    TEST_f_L (llrint, 1.4L, 1),
-    TEST_f_L (llrint, -1.4L, -1),
-
-    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, 0.0, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
+
+    TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
+
+#ifndef TEST_FLOAT
+    TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
+#endif
 
     /* Test boundary conditions.  */
     /* 0x1FFFFF */
-    TEST_f_L (llrint, 2097151.0,2097151LL),
+    TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
     /* 0x800000 */
-    TEST_f_L (llrint, 8388608.0, 8388608LL),
+    TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
     /* 0x1000000 */
-    TEST_f_L (llrint, 16777216.0, 16777216LL),
+    TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
     /* 0x20000000000 */
-    TEST_f_L (llrint, 2199023255552.0, 2199023255552LL),
+    TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
     /* 0x40000000000 */
-    TEST_f_L (llrint, 4398046511104.0, 4398046511104LL),
+    TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
     /* 0x1000000000000 */
-    TEST_f_L (llrint, 281474976710656.0, 281474976710656LL),
+    TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
     /* 0x10000000000000 */
-    TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL),
+    TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
     /* 0x10000080000000 */
-    TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL),
+    TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
     /* 0x20000000000000 */
-    TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL),
+    TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
     /* 0x80000000000000 */
-    TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL),
+    TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
     /* 0x100000000000000 */
-    TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL),
+    TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
 #ifdef TEST_LDOUBLE
     /* The input can only be represented in long double.  */
-    TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL),
-    TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL),
-    TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL),
-
-    TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL),
-    TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL),
-    TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL),
+    TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL, INEXACT_EXCEPTION),
+    TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),

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