@@ -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