diff options
Diffstat (limited to 'py')
-rw-r--r-- | py/obj.h | 1 | ||||
-rw-r--r-- | py/objcomplex.c | 1 | ||||
-rw-r--r-- | py/objfloat.c | 1 |
3 files changed, 3 insertions, 0 deletions
@@ -718,6 +718,7 @@ void mp_str_print_quoted(const mp_print_t *print, const byte *str_data, size_t s #if MICROPY_PY_BUILTINS_FLOAT // float +static inline mp_int_t mp_float_hash(mp_float_t val) { return (mp_int_t)val; } mp_obj_t mp_obj_float_binary_op(mp_uint_t op, mp_float_t lhs_val, mp_obj_t rhs); // can return MP_OBJ_NULL if op not supported // complex diff --git a/py/objcomplex.c b/py/objcomplex.c index 8118fb8138..7ec47edb5b 100644 --- a/py/objcomplex.c +++ b/py/objcomplex.c @@ -117,6 +117,7 @@ STATIC mp_obj_t complex_unary_op(mp_uint_t op, mp_obj_t o_in) { mp_obj_complex_t *o = MP_OBJ_TO_PTR(o_in); switch (op) { case MP_UNARY_OP_BOOL: return mp_obj_new_bool(o->real != 0 || o->imag != 0); + case MP_UNARY_OP_HASH: return MP_OBJ_NEW_SMALL_INT(mp_float_hash(o->real) ^ mp_float_hash(o->imag)); case MP_UNARY_OP_POSITIVE: return o_in; case MP_UNARY_OP_NEGATIVE: return mp_obj_new_complex(-o->real, -o->imag); default: return MP_OBJ_NULL; // op not supported diff --git a/py/objfloat.c b/py/objfloat.c index 6d80d6c0e2..2c355d3557 100644 --- a/py/objfloat.c +++ b/py/objfloat.c @@ -106,6 +106,7 @@ STATIC mp_obj_t float_unary_op(mp_uint_t op, mp_obj_t o_in) { mp_float_t val = mp_obj_float_get(o_in); switch (op) { case MP_UNARY_OP_BOOL: return mp_obj_new_bool(val != 0); + case MP_UNARY_OP_HASH: return MP_OBJ_NEW_SMALL_INT(mp_float_hash(val)); case MP_UNARY_OP_POSITIVE: return o_in; case MP_UNARY_OP_NEGATIVE: return mp_obj_new_float(-val); default: return MP_OBJ_NULL; // op not supported |