Skip to content

Commit 90b824d

Browse files
committed
switch back to no union
1 parent a5cf124 commit 90b824d

1 file changed

Lines changed: 4 additions & 7 deletions

File tree

quaddtype/numpy_quaddtype/src/casts.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,13 +1234,9 @@ static inline int quad_to_numpy_same_value_check(quad_value x, QuadBackendType b
12341234
*y = from_quad<T>(x, backend);
12351235
quad_value roundtrip = to_quad<T>(*y, backend);
12361236
if(backend == BACKEND_SLEEF) {
1237-
// Use memcmp for exact bit-wise comparison to avoid SLEEF comparison function issues
1238-
// on different platforms (especially x86-64 where Sleef_quad may be __float128)
1239-
if (std::memcmp(&x.sleef_value, &roundtrip.sleef_value, sizeof(Sleef_quad)) == 0)
1237+
if(Sleef_iunordq1(x.sleef_value, roundtrip.sleef_value))
12401238
return 1;
1241-
// Also check for NaN == NaN case (NaN bits won't match but both are NaN)
1242-
if (Sleef_iunordq1(x.sleef_value, x.sleef_value) &&
1243-
Sleef_iunordq1(roundtrip.sleef_value, roundtrip.sleef_value))
1239+
if(Sleef_icmpeqq1(x.sleef_value, roundtrip.sleef_value))
12441240
return 1;
12451241
}
12461242
else {
@@ -1249,7 +1245,8 @@ static inline int quad_to_numpy_same_value_check(quad_value x, QuadBackendType b
12491245
if(x.longdouble_value == roundtrip.longdouble_value)
12501246
return 1;
12511247
}
1252-
Sleef_quad sleef_val = quad_to_sleef_quad(&x, backend);
1248+
// Sleef_quad sleef_val = quad_to_sleef_quad(&x, backend);
1249+
Sleef_quad sleef_val = x.sleef_value;
12531250
const char *val_str = quad_to_string_adaptive_cstr(&sleef_val, QUAD_STR_WIDTH);
12541251
if (val_str != NULL) {
12551252
PyErr_Format(PyExc_ValueError,

0 commit comments

Comments
 (0)