Skip to content

Commit 40e0570

Browse files
committed
Fix method of clearing bits
1 parent b2bcd48 commit 40e0570

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

test/test_cmath.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,17 +1254,24 @@ auto test_nan()
12541254
const std::array<sig_type, 5> sigs {1U, 2U, 3U, 0U, 0U};
12551255
constexpr std::array<const char*, 5> payloads {"1", "2", "3", "Junk", "999999999999999999999999999999999999999999999999999999999999"};
12561256

1257+
const T quiet_nan {std::numeric_limits<T>::quiet_NaN()};
1258+
sig_type quiet_nan_bits;
1259+
std::memcpy(&quiet_nan_bits, &quiet_nan, sizeof(sig_type));
1260+
1261+
const T signaling_nan {std::numeric_limits<T>::signaling_NaN()};
1262+
sig_type signaling_nan_bits;
1263+
std::memcpy(&signaling_nan_bits, &signaling_nan, sizeof(sig_type));
1264+
12571265
for (std::size_t i {}; i < sigs.size(); ++i)
12581266
{
12591267
const auto payload {nan<T>(payloads[i])};
12601268
BOOST_TEST(isnan(payload));
12611269
BOOST_TEST(!issignaling(payload));
1262-
const auto removed_nan {payload ^ std::numeric_limits<T>::quiet_NaN()};
1263-
BOOST_TEST(!isnan(removed_nan));
12641270

12651271
// Check the payload
12661272
sig_type bits {};
1267-
std::memcpy(&bits, &removed_nan, sizeof(sig_type));
1273+
std::memcpy(&bits, &payload, sizeof(sig_type));
1274+
bits ^= quiet_nan_bits;
12681275
BOOST_TEST_EQ(bits, sigs[i]);
12691276

12701277
const auto payload_func_bits {read_payload(payload)};
@@ -1276,12 +1283,11 @@ auto test_nan()
12761283
const auto payload {snan<T>(payloads[i])};
12771284
BOOST_TEST(isnan(payload));
12781285
BOOST_TEST(issignaling(payload));
1279-
const auto removed_nan {payload ^ std::numeric_limits<T>::signaling_NaN()};
1280-
BOOST_TEST(!isnan(removed_nan));
12811286

12821287
// Check the payload
12831288
sig_type bits {};
1284-
std::memcpy(&bits, &removed_nan, sizeof(sig_type));
1289+
std::memcpy(&bits, &payload, sizeof(sig_type));
1290+
bits ^= signaling_nan_bits;
12851291
BOOST_TEST_EQ(bits, sigs[i]);
12861292

12871293
const auto payload_func_bits {read_payload(payload)};

0 commit comments

Comments
 (0)