66
77
88TEST (FP32_TO_BITS , positive) {
9- for (uint32_t bits = UINT32_C (0x00000000 ); bits <= UINT32_C (0x7FFFFFFF ); bits++) {
9+ for (uint32_t bits = UINT32_C (0x00000000 ); bits <= UINT32_C (0x7F800000 ); bits++) {
1010 float value;
1111 memcpy (&value, &bits, sizeof (value));
1212
@@ -18,7 +18,7 @@ TEST(FP32_TO_BITS, positive) {
1818}
1919
2020TEST (FP32_TO_BITS , negative) {
21- for (uint32_t bits = UINT32_C (0xFFFFFFFF ); bits >= UINT32_C (0x80000000 ); bits--) {
21+ for (uint32_t bits = UINT32_C (0xFF800000 ); bits >= UINT32_C (0x80000000 ); bits--) {
2222 float value;
2323 memcpy (&value, &bits, sizeof (value));
2424
@@ -29,8 +29,30 @@ TEST(FP32_TO_BITS, negative) {
2929 }
3030}
3131
32+ TEST (FP32_TO_BITS , nan) {
33+ for (uint32_t bits = UINT32_C (0x7F800001 ); bits <= UINT32_C (0x7FFFFFFF ); bits++) {
34+ float value;
35+ memcpy (&value, &bits, sizeof (value));
36+
37+ ASSERT_GT (fp32_to_bits (value) & UINT32_C (0x7FFFFFFF ), UINT32_C (0x7F800000 )) <<
38+ std::hex << std::uppercase << std::setfill (' 0' ) <<
39+ " BITS = 0x" << std::setw (8 ) << bits << " , " <<
40+ " BITCAST(VALUE) = 0x" << std::setw (8 ) << fp32_to_bits (value);
41+ }
42+
43+ for (uint32_t bits = UINT32_C (0xFFFFFFFF ); bits >= UINT32_C (0xFF800001 ); bits--) {
44+ float value;
45+ memcpy (&value, &bits, sizeof (value));
46+
47+ ASSERT_GT (fp32_to_bits (value) & UINT32_C (0x7FFFFFFF ), UINT32_C (0x7F800000 )) <<
48+ std::hex << std::uppercase << std::setfill (' 0' ) <<
49+ " BITS = 0x" << std::setw (8 ) << bits << " , " <<
50+ " BITCAST(VALUE) = 0x" << std::setw (8 ) << fp32_to_bits (value);
51+ }
52+ }
53+
3254TEST (FP32_FROM_BITS , positive) {
33- for (uint32_t bits = UINT32_C (0x00000000 ); bits <= UINT32_C (0x7FFFFFFF ); bits++) {
55+ for (uint32_t bits = UINT32_C (0x00000000 ); bits <= UINT32_C (0x7F800000 ); bits++) {
3456 const float value = fp32_from_bits (bits);
3557 uint32_t bitcast;
3658 memcpy (&bitcast, &value, sizeof (bitcast));
@@ -43,7 +65,7 @@ TEST(FP32_FROM_BITS, positive) {
4365}
4466
4567TEST (FP32_FROM_BITS , negative) {
46- for (uint32_t bits = UINT32_C (0xFFFFFFFF ); bits >= UINT32_C (0x80000000 ); bits--) {
68+ for (uint32_t bits = UINT32_C (0xFF800000 ); bits >= UINT32_C (0x80000000 ); bits--) {
4769 const float value = fp32_from_bits (bits);
4870 uint32_t bitcast;
4971 memcpy (&bitcast, &value, sizeof (bitcast));
@@ -54,3 +76,21 @@ TEST(FP32_FROM_BITS, negative) {
5476 " VALUE = 0x" << std::setw (8 ) << bitcast;
5577 }
5678}
79+
80+ TEST (FP32_FROM_BITS , nan) {
81+ for (uint32_t bits = UINT32_C (0x7F800001 ); bits <= UINT32_C (0x7FFFFFFF ); bits++) {
82+ const float value = fp32_from_bits (bits);
83+
84+ ASSERT_TRUE (std::isnan (value)) <<
85+ std::hex << std::uppercase << std::setfill (' 0' ) <<
86+ " BITS = 0x" << std::setw (8 ) << bits;
87+ }
88+
89+ for (uint32_t bits = UINT32_C (0xFFFFFFFF ); bits >= UINT32_C (0xFF800001 ); bits--) {
90+ const float value = fp32_from_bits (bits);
91+
92+ ASSERT_TRUE (std::isnan (value)) <<
93+ std::hex << std::uppercase << std::setfill (' 0' ) <<
94+ " BITS = 0x" << std::setw (8 ) << bits;
95+ }
96+ }
0 commit comments