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


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

Support testing "inexact" exceptions in libm-test.inc


This patch adds support to libm-test.inc for testing whether "inexact"
exceptions are raised.  Unlike other exceptions, there are only
generally requirements on these for functions bound to particular IEEE
754 operations, so the default is that such exceptions are permitted
but not required, and the case where they are forbidden is represented
explicitly with NO_INEXACT_EXCEPTION.

This patch adds expectations for such exceptions only for rint and
nearbyint (where the only difference between the two functions is
whether such exceptions are raised).  The idea is that I'll add such
expectations for other functions bound to IEEE 754 operations in
followups to this patch (and for functions taking and returning a
quiet NaN, since C11 Annex F says "raise no floating-point exception"
for that case).  For the functions where C11 Annex F leaves
unspecified whether "inexact" is raised but DTS 18661-1 says it isn't
(round, ceil, floor, trunc) I propose to make the tests follow the
requirements of DTS 18661-1.

Tested x86_64 and x86.

2013-05-15  Joseph Myers  <joseph@codesourcery.com>

	* math/libm-test.inc: Remove comment about not testing "inexact"
	exceptions.
	(INEXACT_EXCEPTION): New macro.
	(NO_INEXACT_EXCEPTION): Likewise.
	(INVALID_EXCEPTION_OK): Update value.
	(DIVIDE_BY_ZERO_EXCEPTION_OK): Likewise.
	(OVERFLOW_EXCEPTION_OK): Likewise.
	(UNDERFLOW_EXCEPTION_OK): Likewise.
	(IGNORE_ZERO_INF_SIGN): Likewise.
	(ERRNO_UNCHANGED): Likewise.
	(ERRNO_EDOM): Likewise.
	(ERRNO_ERANGE): Likewise.
	(test_exceptions): Handle testing "inexact" exceptions.
	(nearbyint_test_data): Use NO_INEXACT_EXCEPTION on all tests.
	(rint_test_data): Use NO_INEXACT_EXCEPTION and INEXACT_EXCEPTION.
	(rint_test_data) [LDBL_MANT_DIG <= 100]: Disable some tests.
	(rint_tonearest_test_data): Use NO_INEXACT_EXCEPTION and
	INEXACT_EXCEPTION.
	(rint_towardzero_test_data): Likewise.
	(rint_downward_test_data): Likewise.
	(rint_upward_test_data): Likewise.

diff --git a/math/libm-test.inc b/math/libm-test.inc
index 0843482..d7cea51 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -82,10 +82,6 @@
    against.  These implemented tests should check all cases that are
    specified in ISO C99.
 
-   Exception testing: At the moment only divide-by-zero, invalid,
-   overflow and underflow exceptions are tested.  Inexact exceptions
-   aren't checked at the moment.
-
    NaN values: There exist signalling and quiet NaNs.  This implementation
    only uses quiet NaN as parameter.  Where the sign of a NaN is
    significant, this is not tested.  The payload of NaNs is not examined.
@@ -155,18 +151,22 @@
 #define DIVIDE_BY_ZERO_EXCEPTION	0x2
 #define OVERFLOW_EXCEPTION		0x4
 #define UNDERFLOW_EXCEPTION		0x8
+#define INEXACT_EXCEPTION		0x10
 /* The next flags signals that those exceptions are allowed but not required.   */
-#define INVALID_EXCEPTION_OK		0x10
-#define DIVIDE_BY_ZERO_EXCEPTION_OK	0x20
-#define OVERFLOW_EXCEPTION_OK		0x40
-#define UNDERFLOW_EXCEPTION_OK		0x80
+#define INVALID_EXCEPTION_OK		0x20
+#define DIVIDE_BY_ZERO_EXCEPTION_OK	0x40
+#define OVERFLOW_EXCEPTION_OK		0x80
+#define UNDERFLOW_EXCEPTION_OK		0x100
+/* For "inexact" exceptions, the default is allowed but not required
+   unless INEXACT_EXCEPTION or NO_INEXACT_EXCEPTION is specified.  */
+#define NO_INEXACT_EXCEPTION		0x200
 #define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
 /* Some special test flags, passed together with exceptions.  */
-#define IGNORE_ZERO_INF_SIGN		0x100
+#define IGNORE_ZERO_INF_SIGN		0x400
 /* Indicate errno settings required or disallowed.  */
-#define ERRNO_UNCHANGED			0x200
-#define ERRNO_EDOM			0x400
-#define ERRNO_ERANGE			0x800
+#define ERRNO_UNCHANGED			0x800
+#define ERRNO_EDOM			0x1000
+#define ERRNO_ERANGE			0x2000
 
 /* Values underflowing only for float.  */
 #ifdef TEST_FLOAT
@@ -551,6 +551,11 @@ test_exceptions (const char *test_name, int exception)
     test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
 			   FE_UNDERFLOW, "Underflow");
 #endif
+#ifdef FE_INEXACT
+  if ((exception & (INEXACT_EXCEPTION | NO_INEXACT_EXCEPTION)) != 0)
+    test_single_exception (test_name, exception, INEXACT_EXCEPTION,
+			   FE_INEXACT, "Inexact");
+#endif
   feclearexcept (FE_ALL_EXCEPT);
 }
 
@@ -11701,48 +11706,48 @@ static const struct test_f_f_data nearbyint_test_data[] =
   {
     START_DATA (nearbyint),
 
-    TEST_f_f (nearbyint, 0.0, 0.0),
-    TEST_f_f (nearbyint, minus_zero, minus_zero),
-    TEST_f_f (nearbyint, plus_infty, plus_infty),
-    TEST_f_f (nearbyint, minus_infty, minus_infty),
-    TEST_f_f (nearbyint, qnan_value, qnan_value),
+    TEST_f_f (nearbyint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
 
     /* Subnormal values */
-    TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307),
-    TEST_f_f (nearbyint, -4.45015e-308, minus_zero),
+    TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -4.45015e-308, minus_zero, NO_INEXACT_EXCEPTION),
 
     /* Default rounding mode is round to nearest.  */
-    TEST_f_f (nearbyint, 0.5, 0.0),
-    TEST_f_f (nearbyint, 1.5, 2.0),
-    TEST_f_f (nearbyint, -0.5, minus_zero),
-    TEST_f_f (nearbyint, -1.5, -2.0),
-
-    TEST_f_f (nearbyint, 262144.75, 262145.0),
-    TEST_f_f (nearbyint, 262142.75, 262143.0),
-    TEST_f_f (nearbyint, 524286.75, 524287.0),
-    TEST_f_f (nearbyint, 524288.75, 524289.0),
-
-    TEST_f_f (nearbyint, 1048576.75, 1048577.0),
-    TEST_f_f (nearbyint, 2097152.75, 2097153.0),
-    TEST_f_f (nearbyint, 2492472.75, 2492473.0),
-    TEST_f_f (nearbyint, 2886220.75, 2886221.0),
-    TEST_f_f (nearbyint, 3058792.75, 3058793.0),
-    TEST_f_f (nearbyint, -1048576.75, -1048577.0),
-    TEST_f_f (nearbyint, -2097152.75, -2097153.0),
-    TEST_f_f (nearbyint, -2492472.75, -2492473.0),
-    TEST_f_f (nearbyint, -2886220.75, -2886221.0),
-    TEST_f_f (nearbyint, -3058792.75, -3058793.0),
-#ifndef TEST_FLOAT
-    TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0),
-    TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0),
-    TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0),
-    TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0),
-    TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0),
-    TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0),
-    TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0),
-    TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0),
-    TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0),
-    TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0),
+    TEST_f_f (nearbyint, 0.5, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 1.5, 2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -0.5, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -1.5, -2.0, NO_INEXACT_EXCEPTION),
+
+    TEST_f_f (nearbyint, 262144.75, 262145.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 262142.75, 262143.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 524286.75, 524287.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 524288.75, 524289.0, NO_INEXACT_EXCEPTION),
+
+    TEST_f_f (nearbyint, 1048576.75, 1048577.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 2097152.75, 2097153.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 2492472.75, 2492473.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 2886220.75, 2886221.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 3058792.75, 3058793.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -1048576.75, -1048577.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -2097152.75, -2097153.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -2492472.75, -2492473.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -2886220.75, -2886221.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -3058792.75, -3058793.0, NO_INEXACT_EXCEPTION),
+#ifndef TEST_FLOAT
+    TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0, NO_INEXACT_EXCEPTION),
 #endif
 
     END_DATA (nearbyint)
@@ -12788,117 +12793,119 @@ static const struct test_f_f_data rint_test_data[] =
     START_DATA (rint),
     /* TODO: missing qNaN tests.  */
 
-    TEST_f_f (rint, 0.0, 0.0),
-    TEST_f_f (rint, minus_zero, minus_zero),
-    TEST_f_f (rint, plus_infty, plus_infty),
-    TEST_f_f (rint, minus_infty, minus_infty),
+    TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
 
     /* Default rounding mode is round to even.  */
-    TEST_f_f (rint, 0.5, 0.0),
-    TEST_f_f (rint, 1.5, 2.0),
-    TEST_f_f (rint, 2.5, 2.0),
-    TEST_f_f (rint, 3.5, 4.0),
-    TEST_f_f (rint, 4.5, 4.0),
-    TEST_f_f (rint, -0.5, -0.0),
-    TEST_f_f (rint, -1.5, -2.0),
-    TEST_f_f (rint, -2.5, -2.0),
-    TEST_f_f (rint, -3.5, -4.0),
-    TEST_f_f (rint, -4.5, -4.0),
-    TEST_f_f (rint, 0.1, 0.0),
-    TEST_f_f (rint, 0.25, 0.0),
-    TEST_f_f (rint, 0.625, 1.0),
-    TEST_f_f (rint, -0.1, -0.0),
-    TEST_f_f (rint, -0.25, -0.0),
-    TEST_f_f (rint, -0.625, -1.0),
-    TEST_f_f (rint, 262144.75, 262145.0),
-    TEST_f_f (rint, 262142.75, 262143.0),
-    TEST_f_f (rint, 524286.75, 524287.0),
-    TEST_f_f (rint, 524288.75, 524289.0),
-    TEST_f_f (rint, 1048576.75, 1048577.0),
-    TEST_f_f (rint, 2097152.75, 2097153.0),
-    TEST_f_f (rint, -1048576.75, -1048577.0),
-    TEST_f_f (rint, -2097152.75, -2097153.0),
-#ifndef TEST_FLOAT
-    TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
-    TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
-    TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
-    TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
-    TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
-    TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
-    TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
-    TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
-    TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
-    TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
+    TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.5, 2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 2.5, 2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 3.5, 4.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4.5, 4.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.5, -2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2.5, -2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -3.5, -4.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4.5, -4.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.625, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.625, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 262144.75, 262145.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 262142.75, 262143.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 524286.75, 524287.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 524288.75, 524289.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1048576.75, 1048577.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 2097152.75, 2097153.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1048576.75, -1048577.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2097152.75, -2097153.0, INEXACT_EXCEPTION),
+#ifndef TEST_FLOAT
+    TEST_f_f (rint, 70368744177664.75, 70368744177665.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 140737488355328.75, 140737488355329.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 281474976710656.75, 281474976710657.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 562949953421312.75, 562949953421313.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -70368744177664.75, -70368744177665.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -140737488355328.75, -140737488355329.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -281474976710656.75, -281474976710657.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -562949953421312.75, -562949953421313.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0, INEXACT_EXCEPTION),
 #endif
 #ifdef TEST_LDOUBLE
     /* The result can only be represented in long double.  */
-    TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
-    TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
+    TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
+    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L, INEXACT_EXCEPTION),
 # endif
 
-    TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
-    TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
+    TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L, INEXACT_EXCEPTION),
 
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
-
-    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
-    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
-
-    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
-    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
+    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
 # endif
 
-    TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L),
-
-    TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L),
-
-    TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L),
-    TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L),
-    TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L),
-    TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L),
-    TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L),
-
-    TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L),
-    TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L),
-    TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L),
-    TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L),
-    TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L),
-
-    TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
-    TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
-    TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
-    TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
-    TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
+    TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L, INEXACT_EXCEPTION),
+
+# if LDBL_MANT_DIG > 100
+    TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L, INEXACT_EXCEPTION),
+# endif
 #endif
     END_DATA (rint)
   };
@@ -12914,73 +12921,73 @@ rint_test (void)
 static const struct test_f_f_data rint_tonearest_test_data[] =
   {
     START_DATA (rint_tonearest),
-    TEST_f_f (rint, 2.0, 2.0),
-    TEST_f_f (rint, 1.5, 2.0),
-    TEST_f_f (rint, 1.0, 1.0),
-    TEST_f_f (rint, 0.5, 0.0),
-    TEST_f_f (rint, 0.0, 0.0),
-    TEST_f_f (rint, minus_zero, minus_zero),
-    TEST_f_f (rint, -0.5, -0.0),
-    TEST_f_f (rint, -1.0, -1.0),
-    TEST_f_f (rint, -1.5, -2.0),
-    TEST_f_f (rint, -2.0, -2.0),
-    TEST_f_f (rint, 0.1, 0.0),
-    TEST_f_f (rint, 0.25, 0.0),
-    TEST_f_f (rint, 0.625, 1.0),
-    TEST_f_f (rint, -0.1, -0.0),
-    TEST_f_f (rint, -0.25, -0.0),
-    TEST_f_f (rint, -0.625, -1.0),
-    TEST_f_f (rint, 1048576.75, 1048577.0),
-    TEST_f_f (rint, 2097152.75, 2097153.0),
-    TEST_f_f (rint, -1048576.75, -1048577.0),
-    TEST_f_f (rint, -2097152.75, -2097153.0),
-#ifndef TEST_FLOAT
-    TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
-    TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
-    TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
-    TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
-    TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
-    TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
-    TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
-    TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
-    TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
-    TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
+    TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.5, 2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.5, -2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.625, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.625, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1048576.75, 1048577.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 2097152.75, 2097153.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1048576.75, -1048577.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2097152.75, -2097153.0, INEXACT_EXCEPTION),
+#ifndef TEST_FLOAT
+    TEST_f_f (rint, 70368744177664.75, 70368744177665.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 140737488355328.75, 140737488355329.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 281474976710656.75, 281474976710657.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 562949953421312.75, 562949953421313.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -70368744177664.75, -70368744177665.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -140737488355328.75, -140737488355329.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -281474976710656.75, -281474976710657.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -562949953421312.75, -562949953421313.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0, INEXACT_EXCEPTION),
 #endif
 #ifdef TEST_LDOUBLE
     /* The result can only be represented in long double.  */
-    TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
-    TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
+    TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
+    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L, INEXACT_EXCEPTION),
 # endif
-    TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
-    TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
+    TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
-
-    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
-    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
-
-    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
-    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
+    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (rint_tonearest)
@@ -12997,73 +13004,73 @@ rint_test_tonearest (void)
 static const struct test_f_f_data rint_towardzero_test_data[] =
   {
     START_DATA (rint_towardzero),
-    TEST_f_f (rint, 2.0, 2.0),
-    TEST_f_f (rint, 1.5, 1.0),
-    TEST_f_f (rint, 1.0, 1.0),
-    TEST_f_f (rint, 0.5, 0.0),
-    TEST_f_f (rint, 0.0, 0.0),
-    TEST_f_f (rint, minus_zero, minus_zero),
-    TEST_f_f (rint, -0.5, -0.0),
-    TEST_f_f (rint, -1.0, -1.0),
-    TEST_f_f (rint, -1.5, -1.0),
-    TEST_f_f (rint, -2.0, -2.0),
-    TEST_f_f (rint, 0.1, 0.0),
-    TEST_f_f (rint, 0.25, 0.0),
-    TEST_f_f (rint, 0.625, 0.0),
-    TEST_f_f (rint, -0.1, -0.0),
-    TEST_f_f (rint, -0.25, -0.0),
-    TEST_f_f (rint, -0.625, -0.0),
-    TEST_f_f (rint, 1048576.75, 1048576.0),
-    TEST_f_f (rint, 2097152.75, 2097152.0),
-    TEST_f_f (rint, -1048576.75, -1048576.0),
-    TEST_f_f (rint, -2097152.75, -2097152.0),
-#ifndef TEST_FLOAT
-    TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
-    TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
-    TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
-    TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
-    TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
-    TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
-    TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
-    TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
-    TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
-    TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
+    TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.5, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.5, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.625, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.625, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1048576.75, 1048576.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 2097152.75, 2097152.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1048576.75, -1048576.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2097152.75, -2097152.0, INEXACT_EXCEPTION),
+#ifndef TEST_FLOAT
+    TEST_f_f (rint, 70368744177664.75, 70368744177664.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 140737488355328.75, 140737488355328.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 281474976710656.75, 281474976710656.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 562949953421312.75, 562949953421312.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -70368744177664.75, -70368744177664.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -140737488355328.75, -140737488355328.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -281474976710656.75, -281474976710656.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -562949953421312.75, -562949953421312.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0, INEXACT_EXCEPTION),
 #endif
 #ifdef TEST_LDOUBLE
     /* The result can only be represented in long double.  */
-    TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
+    TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
-    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
+    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
 # endif
-    TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
+    TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
-    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
-
-    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
-    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
-    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
-
-    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
-    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
-    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
+    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (rint_towardzero)
@@ -13080,73 +13087,73 @@ rint_test_towardzero (void)
 static const struct test_f_f_data rint_downward_test_data[] =
   {
     START_DATA (rint_downward),
-    TEST_f_f (rint, 2.0, 2.0),
-    TEST_f_f (rint, 1.5, 1.0),
-    TEST_f_f (rint, 1.0, 1.0),
-    TEST_f_f (rint, 0.5, 0.0),
-    TEST_f_f (rint, 0.0, 0.0),
-    TEST_f_f (rint, minus_zero, minus_zero),
-    TEST_f_f (rint, -0.5, -1.0),
-    TEST_f_f (rint, -1.0, -1.0),
-    TEST_f_f (rint, -1.5, -2.0),
-    TEST_f_f (rint, -2.0, -2.0),
-    TEST_f_f (rint, 0.1, 0.0),
-    TEST_f_f (rint, 0.25, 0.0),
-    TEST_f_f (rint, 0.625, 0.0),
-    TEST_f_f (rint, -0.1, -1.0),
-    TEST_f_f (rint, -0.25, -1.0),
-    TEST_f_f (rint, -0.625, -1.0),
-    TEST_f_f (rint, 1048576.75, 1048576.0),
-    TEST_f_f (rint, 2097152.75, 2097152.0),
-    TEST_f_f (rint, -1048576.75, -1048577.0),
-    TEST_f_f (rint, -2097152.75, -2097153.0),
-#ifndef TEST_FLOAT
-    TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
-    TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
-    TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
-    TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
-    TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
-    TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
-    TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
-    TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
-    TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
-    TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
+    TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.5, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.5, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.5, -2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.625, 0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.1, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.25, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.625, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1048576.75, 1048576.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 2097152.75, 2097152.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1048576.75, -1048577.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2097152.75, -2097153.0, INEXACT_EXCEPTION),
+#ifndef TEST_FLOAT
+    TEST_f_f (rint, 70368744177664.75, 70368744177664.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 140737488355328.75, 140737488355328.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 281474976710656.75, 281474976710656.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 562949953421312.75, 562949953421312.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -70368744177664.75, -70368744177665.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -140737488355328.75, -140737488355329.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -281474976710656.75, -281474976710657.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -562949953421312.75, -562949953421313.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0, INEXACT_EXCEPTION),
 #endif
 #ifdef TEST_LDOUBLE
     /* The result can only be represented in long double.  */
-    TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
+    TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
-    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
+    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
 # endif
-    TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L),
-    TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L),
-    TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
-    TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
+    TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
-
-    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
-    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
-    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
-
-    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L),
-    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
+    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (rint_downward)
@@ -13163,73 +13170,73 @@ rint_test_downward (void)
 static const struct test_f_f_data rint_upward_test_data[] =
   {
     START_DATA (rint_upward),
-    TEST_f_f (rint, 2.0, 2.0),
-    TEST_f_f (rint, 1.5, 2.0),
-    TEST_f_f (rint, 1.0, 1.0),
-    TEST_f_f (rint, 0.5, 1.0),
-    TEST_f_f (rint, 0.0, 0.0),
-    TEST_f_f (rint, minus_zero, minus_zero),
-    TEST_f_f (rint, -0.5, -0.0),
-    TEST_f_f (rint, -1.0, -1.0),
-    TEST_f_f (rint, -1.5, -1.0),
-    TEST_f_f (rint, -2.0, -2.0),
-    TEST_f_f (rint, 0.1, 1.0),
-    TEST_f_f (rint, 0.25, 1.0),
-    TEST_f_f (rint, 0.625, 1.0),
-    TEST_f_f (rint, -0.1, -0.0),
-    TEST_f_f (rint, -0.25, -0.0),
-    TEST_f_f (rint, -0.625, -0.0),
-    TEST_f_f (rint, 1048576.75, 1048577.0),
-    TEST_f_f (rint, 2097152.75, 2097153.0),
-    TEST_f_f (rint, -1048576.75, -1048576.0),
-    TEST_f_f (rint, -2097152.75, -2097152.0),
-#ifndef TEST_FLOAT
-    TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
-    TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
-    TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
-    TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
-    TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
-    TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
-    TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
-    TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
-    TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
-    TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
+    TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.5, 2.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.5, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1.5, -1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.1, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.25, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 0.625, 1.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -0.625, -0.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1048576.75, 1048577.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 2097152.75, 2097153.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1048576.75, -1048576.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -2097152.75, -2097152.0, INEXACT_EXCEPTION),
+#ifndef TEST_FLOAT
+    TEST_f_f (rint, 70368744177664.75, 70368744177665.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 140737488355328.75, 140737488355329.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 281474976710656.75, 281474976710657.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 562949953421312.75, 562949953421313.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -70368744177664.75, -70368744177664.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -140737488355328.75, -140737488355328.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -281474976710656.75, -281474976710656.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -562949953421312.75, -562949953421312.0, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0, INEXACT_EXCEPTION),
 #endif
 #ifdef TEST_LDOUBLE
     /* The result can only be represented in long double.  */
-    TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L),
-    TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L),
-    TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
-    TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
+    TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
-    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
-    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
+    TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L, INEXACT_EXCEPTION),
 # endif
-    TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
-    TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
+    TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L, INEXACT_EXCEPTION),
 # if LDBL_MANT_DIG > 100
-    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
-    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
-    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
-
-    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L),
-    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
-    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
-    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
-
-    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
-    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
-    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
-    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
-    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
+    TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
+
+    TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
+    TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
 # endif
 #endif
     END_DATA (rint_upward)

-- 
Joseph S. Myers
joseph@codesourcery.com


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