1 parent febeff4 commit c073519Copy full SHA for c073519
1 file changed
py/objint.c
@@ -103,7 +103,12 @@ mp_fp_as_int_class_t mp_classify_fp_as_int(mp_float_t val) {
103
#if MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_DOUBLE
104
e |= u.i[MP_ENDIANNESS_BIG] != 0;
105
#endif
106
- e += ((1 << MP_FLOAT_EXP_BITS) - 1) << MP_FLOAT_EXP_SHIFT_I32;
+ if ((e & ~(1 << MP_FLOAT_SIGN_SHIFT_I32)) == 0) {
107
+ // handle case of -0 (when sign is set but rest of bits are zero)
108
+ e = 0;
109
+ } else {
110
+ e += ((1 << MP_FLOAT_EXP_BITS) - 1) << MP_FLOAT_EXP_SHIFT_I32;
111
+ }
112
} else {
113
e &= ~((1 << MP_FLOAT_EXP_SHIFT_I32) - 1);
114
}
0 commit comments