@@ -31,13 +31,22 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
3131
3232 DECLARE_SPECIAL_CONSTANTS (T)
3333
34+ static constexpr T one = T(1.0 );
35+ static constexpr T two = T(2.0 );
36+ static constexpr T neg_two = T(-2.0 );
37+ static constexpr T three = T(3.0 );
38+ static constexpr T neg_one_point_one = T(-1.1 );
39+ static constexpr T six_halves = T(6.5 );
40+ static constexpr T neg_six_halves = T(-6.5 );
41+ static constexpr T two_quaters = T(2.25 );
42+ static constexpr T neg_two_quaters = T(-2.25 );
43+
3444public:
3545 typedef T (*FModFunc)(T, T);
3646
3747 void testSpecialNumbers (FModFunc f) {
3848 // fmod (+0, y) == +0 for y != 0.
39- // FIXME: raises FE_INEXACT for bfloat16
40- // TEST_SPECIAL(zero, T(3.0), zero, false, 0);
49+ TEST_SPECIAL (zero, three, zero, false , 0 );
4150 TEST_SPECIAL (zero, min_denormal, zero, false , 0 );
4251 TEST_SPECIAL (zero, -min_denormal, zero, false , 0 );
4352 TEST_SPECIAL (zero, min_normal, zero, false , 0 );
@@ -46,7 +55,7 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
4655 TEST_SPECIAL (zero, -max_normal, zero, false , 0 );
4756
4857 // fmod (-0, y) == -0 for y != 0.
49- // TEST_SPECIAL(neg_zero, T(3.0) , neg_zero, false, 0);
58+ TEST_SPECIAL (neg_zero, three , neg_zero, false , 0 );
5059 TEST_SPECIAL (neg_zero, min_denormal, neg_zero, false , 0 );
5160 TEST_SPECIAL (neg_zero, -min_denormal, neg_zero, false , 0 );
5261 TEST_SPECIAL (neg_zero, min_normal, neg_zero, false , 0 );
@@ -55,8 +64,8 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
5564 TEST_SPECIAL (neg_zero, -max_normal, neg_zero, false , 0 );
5665
5766 // fmod (+inf, y) == aNaN plus invalid exception.
58- TEST_SPECIAL (inf, T ( 3.0 ) , aNaN, true , FE_INVALID);
59- TEST_SPECIAL (inf, T (- 1.1 ) , aNaN, true , FE_INVALID);
67+ TEST_SPECIAL (inf, three , aNaN, true , FE_INVALID);
68+ TEST_SPECIAL (inf, neg_one_point_one , aNaN, true , FE_INVALID);
6069 TEST_SPECIAL (inf, zero, aNaN, true , FE_INVALID);
6170 TEST_SPECIAL (inf, neg_zero, aNaN, true , FE_INVALID);
6271 TEST_SPECIAL (inf, min_denormal, aNaN, true , FE_INVALID);
@@ -66,8 +75,8 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
6675 TEST_SPECIAL (inf, neg_inf, aNaN, true , FE_INVALID);
6776
6877 // fmod (-inf, y) == aNaN plus invalid exception.
69- TEST_SPECIAL (neg_inf, T ( 3.0 ) , aNaN, true , FE_INVALID);
70- TEST_SPECIAL (neg_inf, T (- 1.1 ) , aNaN, true , FE_INVALID);
78+ TEST_SPECIAL (neg_inf, three , aNaN, true , FE_INVALID);
79+ TEST_SPECIAL (neg_inf, neg_one_point_one , aNaN, true , FE_INVALID);
7180 TEST_SPECIAL (neg_inf, zero, aNaN, true , FE_INVALID);
7281 TEST_SPECIAL (neg_inf, neg_zero, aNaN, true , FE_INVALID);
7382 TEST_SPECIAL (neg_inf, min_denormal, aNaN, true , FE_INVALID);
@@ -77,17 +86,17 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
7786 TEST_SPECIAL (neg_inf, neg_inf, aNaN, true , FE_INVALID);
7887
7988 // fmod (x, +0) == aNaN plus invalid exception.
80- TEST_SPECIAL (T ( 3.0 ) , zero, aNaN, true , FE_INVALID);
81- TEST_SPECIAL (T (- 1.1 ) , zero, aNaN, true , FE_INVALID);
89+ TEST_SPECIAL (three , zero, aNaN, true , FE_INVALID);
90+ TEST_SPECIAL (neg_one_point_one , zero, aNaN, true , FE_INVALID);
8291 TEST_SPECIAL (zero, zero, aNaN, true , FE_INVALID);
8392 TEST_SPECIAL (neg_zero, zero, aNaN, true , FE_INVALID);
8493 TEST_SPECIAL (min_denormal, zero, aNaN, true , FE_INVALID);
8594 TEST_SPECIAL (min_normal, zero, aNaN, true , FE_INVALID);
8695 TEST_SPECIAL (max_normal, zero, aNaN, true , FE_INVALID);
8796
8897 // fmod (x, -0) == aNaN plus invalid exception.
89- TEST_SPECIAL (T ( 3.0 ) , neg_zero, aNaN, true , FE_INVALID);
90- TEST_SPECIAL (T (- 1.1 ) , neg_zero, aNaN, true , FE_INVALID);
98+ TEST_SPECIAL (three , neg_zero, aNaN, true , FE_INVALID);
99+ TEST_SPECIAL (neg_one_point_one , neg_zero, aNaN, true , FE_INVALID);
91100 TEST_SPECIAL (zero, neg_zero, aNaN, true , FE_INVALID);
92101 TEST_SPECIAL (neg_zero, neg_zero, aNaN, true , FE_INVALID);
93102 TEST_SPECIAL (min_denormal, neg_zero, aNaN, true , FE_INVALID);
@@ -100,21 +109,21 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
100109 TEST_SPECIAL (min_denormal, inf, min_denormal, false , 0 );
101110 TEST_SPECIAL (min_normal, inf, min_normal, false , 0 );
102111 TEST_SPECIAL (max_normal, inf, max_normal, false , 0 );
103- // TEST_SPECIAL(T(3.0) , inf, T(3.0) , false, 0);
112+ TEST_SPECIAL (three , inf, three , false , 0 );
104113 // fmod (x, -inf) == x for x not infinite.
105114 TEST_SPECIAL (zero, neg_inf, zero, false , 0 );
106115 TEST_SPECIAL (neg_zero, neg_inf, neg_zero, false , 0 );
107116 TEST_SPECIAL (min_denormal, neg_inf, min_denormal, false , 0 );
108117 TEST_SPECIAL (min_normal, neg_inf, min_normal, false , 0 );
109118 TEST_SPECIAL (max_normal, neg_inf, max_normal, false , 0 );
110- // TEST_SPECIAL(T(3.0) , neg_inf, T(3.0) , false, 0);
119+ TEST_SPECIAL (three , neg_inf, three , false , 0 );
111120
112121 TEST_SPECIAL (zero, aNaN, aNaN, false , 0 );
113122 TEST_SPECIAL (zero, neg_aNaN, aNaN, false , 0 );
114123 TEST_SPECIAL (neg_zero, aNaN, aNaN, false , 0 );
115124 TEST_SPECIAL (neg_zero, neg_aNaN, aNaN, false , 0 );
116- // TEST_SPECIAL(T(1.0) , aNaN, aNaN, false, 0);
117- // TEST_SPECIAL(T(1.0) , neg_aNaN, aNaN, false, 0);
125+ TEST_SPECIAL (one , aNaN, aNaN, false , 0 );
126+ TEST_SPECIAL (one , neg_aNaN, aNaN, false , 0 );
118127 TEST_SPECIAL (inf, aNaN, aNaN, false , 0 );
119128 TEST_SPECIAL (inf, neg_aNaN, aNaN, false , 0 );
120129 TEST_SPECIAL (neg_inf, aNaN, aNaN, false , 0 );
@@ -123,8 +132,8 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
123132 TEST_SPECIAL (zero, neg_sNaN, aNaN, false , FE_INVALID);
124133 TEST_SPECIAL (neg_zero, sNaN , aNaN, false , FE_INVALID);
125134 TEST_SPECIAL (neg_zero, neg_sNaN, aNaN, false , FE_INVALID);
126- TEST_SPECIAL (T ( 1.0 ) , sNaN , aNaN, false , FE_INVALID);
127- TEST_SPECIAL (T ( 1.0 ) , neg_sNaN, aNaN, false , FE_INVALID);
135+ TEST_SPECIAL (one , sNaN , aNaN, false , FE_INVALID);
136+ TEST_SPECIAL (one , neg_sNaN, aNaN, false , FE_INVALID);
128137 TEST_SPECIAL (inf, sNaN , aNaN, false , FE_INVALID);
129138 TEST_SPECIAL (inf, neg_sNaN, aNaN, false , FE_INVALID);
130139 TEST_SPECIAL (neg_inf, sNaN , aNaN, false , FE_INVALID);
@@ -133,8 +142,8 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
133142 TEST_SPECIAL (neg_aNaN, zero, aNaN, false , 0 );
134143 TEST_SPECIAL (aNaN, neg_zero, aNaN, false , 0 );
135144 TEST_SPECIAL (neg_aNaN, neg_zero, aNaN, false , 0 );
136- // TEST_SPECIAL(aNaN, T(1.0) , aNaN, false, 0);
137- // TEST_SPECIAL(neg_aNaN, T(1.0) , aNaN, false, 0);
145+ TEST_SPECIAL (aNaN, one , aNaN, false , 0 );
146+ TEST_SPECIAL (neg_aNaN, one , aNaN, false , 0 );
138147 TEST_SPECIAL (aNaN, inf, aNaN, false , 0 );
139148 TEST_SPECIAL (neg_aNaN, inf, aNaN, false , 0 );
140149 TEST_SPECIAL (aNaN, neg_inf, aNaN, false , 0 );
@@ -143,8 +152,8 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
143152 TEST_SPECIAL (neg_sNaN, zero, aNaN, false , FE_INVALID);
144153 TEST_SPECIAL (sNaN , neg_zero, aNaN, false , FE_INVALID);
145154 TEST_SPECIAL (neg_sNaN, neg_zero, aNaN, false , FE_INVALID);
146- TEST_SPECIAL (sNaN , T ( 1.0 ) , aNaN, false , FE_INVALID);
147- TEST_SPECIAL (neg_sNaN, T ( 1.0 ) , aNaN, false , FE_INVALID);
155+ TEST_SPECIAL (sNaN , one , aNaN, false , FE_INVALID);
156+ TEST_SPECIAL (neg_sNaN, one , aNaN, false , FE_INVALID);
148157 TEST_SPECIAL (sNaN , inf, aNaN, false , FE_INVALID);
149158 TEST_SPECIAL (neg_sNaN, inf, aNaN, false , FE_INVALID);
150159 TEST_SPECIAL (sNaN , neg_inf, aNaN, false , FE_INVALID);
@@ -166,10 +175,10 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
166175 TEST_SPECIAL (neg_sNaN, sNaN , aNaN, false , FE_INVALID);
167176 TEST_SPECIAL (neg_sNaN, neg_sNaN, aNaN, false , FE_INVALID);
168177
169- // TEST_SPECIAL(T(6.5), T(2.25), T(2.0) , false, 0);
170- // TEST_SPECIAL(T(-6.5), T(2.25), T(-2.0) , false, 0);
171- // TEST_SPECIAL(T(6.5), T(-2.25), T(2.0) , false, 0);
172- // TEST_SPECIAL(T(-6.5), T(-2.25), T(-2.0) , false, 0);
178+ TEST_SPECIAL (six_halves, two_quaters, two , false , 0 );
179+ TEST_SPECIAL (neg_six_halves, two_quaters, neg_two , false , 0 );
180+ TEST_SPECIAL (six_halves, neg_two_quaters, two , false , 0 );
181+ TEST_SPECIAL (neg_six_halves, neg_two_quaters, neg_two , false , 0 );
173182
174183 TEST_SPECIAL (max_normal, max_normal, zero, false , 0 );
175184 TEST_SPECIAL (max_normal, -max_normal, zero, false , 0 );
0 commit comments