@@ -66,37 +66,43 @@ class RIntTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
6666 void testSpecialNumbers (RIntFunc func) {
6767 for (int mode : ROUNDING_MODES) {
6868 LIBC_NAMESPACE::fputil::set_round (mode);
69- ASSERT_FP_EQ (inf, func (inf));
70- ASSERT_FP_EQ (neg_inf, func (neg_inf));
71- ASSERT_FP_EQ (nan, func (nan));
72- ASSERT_FP_EQ (zero, func (zero));
73- ASSERT_FP_EQ (neg_zero, func (neg_zero));
69+ EXPECT_FP_EQ (inf, func (inf));
70+ EXPECT_FP_EQ (neg_inf, func (neg_inf));
71+ EXPECT_FP_EQ (nan, func (nan));
72+ EXPECT_FP_EQ (zero, func (zero));
73+ EXPECT_FP_EQ (neg_zero, func (neg_zero));
7474 }
7575 }
7676
7777 void testRoundNumbers (RIntFunc func) {
7878 for (int mode : ROUNDING_MODES) {
7979 LIBC_NAMESPACE::fputil::set_round (mode);
8080 mpfr::RoundingMode mpfr_mode = to_mpfr_rounding_mode (mode);
81- ASSERT_FP_EQ (func (T (1.0 )), mpfr::round (T (1.0 ), mpfr_mode));
82- ASSERT_FP_EQ (func (T (-1.0 )), mpfr::round (T (-1.0 ), mpfr_mode));
83- ASSERT_FP_EQ (func (T (10.0 )), mpfr::round (T (10.0 ), mpfr_mode));
84- ASSERT_FP_EQ (func (T (-10.0 )), mpfr::round (T (-10.0 ), mpfr_mode));
85- ASSERT_FP_EQ (func (T (1234.0 )), mpfr::round (T (1234.0 ), mpfr_mode));
86- ASSERT_FP_EQ (func (T (-1234.0 )), mpfr::round (T (-1234.0 ), mpfr_mode));
81+ EXPECT_FP_EQ (func (T (1.0 )), mpfr::round (T (1.0 ), mpfr_mode));
82+ EXPECT_FP_EQ (func (T (-1.0 )), mpfr::round (T (-1.0 ), mpfr_mode));
83+ EXPECT_FP_EQ (func (T (10.0 )), mpfr::round (T (10.0 ), mpfr_mode));
84+ EXPECT_FP_EQ (func (T (-10.0 )), mpfr::round (T (-10.0 ), mpfr_mode));
85+ EXPECT_FP_EQ (func (T (1234.0 )), mpfr::round (T (1234.0 ), mpfr_mode));
86+ EXPECT_FP_EQ (func (T (-1234.0 )), mpfr::round (T (-1234.0 ), mpfr_mode));
8787 }
8888 }
8989
9090 void testFractions (RIntFunc func) {
9191 for (int mode : ROUNDING_MODES) {
9292 LIBC_NAMESPACE::fputil::set_round (mode);
9393 mpfr::RoundingMode mpfr_mode = to_mpfr_rounding_mode (mode);
94- ASSERT_FP_EQ (func (T (0.5 )), mpfr::round (T (0.5 ), mpfr_mode));
95- ASSERT_FP_EQ (func (T (-0.5 )), mpfr::round (T (-0.5 ), mpfr_mode));
96- ASSERT_FP_EQ (func (T (0.115 )), mpfr::round (T (0.115 ), mpfr_mode));
97- ASSERT_FP_EQ (func (T (-0.115 )), mpfr::round (T (-0.115 ), mpfr_mode));
98- ASSERT_FP_EQ (func (T (0.715 )), mpfr::round (T (0.715 ), mpfr_mode));
99- ASSERT_FP_EQ (func (T (-0.715 )), mpfr::round (T (-0.715 ), mpfr_mode));
94+ EXPECT_FP_EQ_WITH_EXCEPTION (func (T (0.5 )), mpfr::round (T (0.5 ), mpfr_mode),
95+ FE_INEXACT);
96+ EXPECT_FP_EQ_WITH_EXCEPTION (func (T (-0.5 )),
97+ mpfr::round (T (-0.5 ), mpfr_mode), FE_INEXACT);
98+ EXPECT_FP_EQ_WITH_EXCEPTION (func (T (0.115 )),
99+ mpfr::round (T (0.115 ), mpfr_mode), FE_INEXACT);
100+ EXPECT_FP_EQ_WITH_EXCEPTION (
101+ func (T (-0.115 )), mpfr::round (T (-0.115 ), mpfr_mode), FE_INEXACT);
102+ EXPECT_FP_EQ_WITH_EXCEPTION (func (T (0.715 )),
103+ mpfr::round (T (0.715 ), mpfr_mode), FE_INEXACT);
104+ EXPECT_FP_EQ_WITH_EXCEPTION (
105+ func (T (-0.715 )), mpfr::round (T (-0.715 ), mpfr_mode), FE_INEXACT);
100106 }
101107 }
102108
@@ -110,7 +116,8 @@ class RIntTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
110116 for (int mode : ROUNDING_MODES) {
111117 LIBC_NAMESPACE::fputil::set_round (mode);
112118 mpfr::RoundingMode mpfr_mode = to_mpfr_rounding_mode (mode);
113- ASSERT_FP_EQ (func (x), mpfr::round (x, mpfr_mode));
119+ EXPECT_FP_EQ_WITH_EXCEPTION (func (x), mpfr::round (x, mpfr_mode),
120+ FE_INEXACT);
114121 }
115122 }
116123 }
@@ -131,7 +138,7 @@ class RIntTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
131138 for (int mode : ROUNDING_MODES) {
132139 LIBC_NAMESPACE::fputil::set_round (mode);
133140 mpfr::RoundingMode mpfr_mode = to_mpfr_rounding_mode (mode);
134- ASSERT_FP_EQ (func (x), mpfr::round (x, mpfr_mode));
141+ EXPECT_FP_EQ (func (x), mpfr::round (x, mpfr_mode));
135142 }
136143 }
137144 }
0 commit comments