py: Support mpz -op- float, mpz -op- complex, and complex -op- mpz.
This commit is contained in:
parent
c9fd6645b0
commit
0aa5d51cf1
3
py/obj.c
3
py/obj.c
|
@ -195,6 +195,9 @@ void mp_obj_get_complex(mp_obj_t arg, mp_float_t *real, mp_float_t *imag) {
|
||||||
} else if (MP_OBJ_IS_SMALL_INT(arg)) {
|
} else if (MP_OBJ_IS_SMALL_INT(arg)) {
|
||||||
*real = MP_OBJ_SMALL_INT_VALUE(arg);
|
*real = MP_OBJ_SMALL_INT_VALUE(arg);
|
||||||
*imag = 0;
|
*imag = 0;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(arg, &mp_type_int)) {
|
||||||
|
*real = mp_obj_int_as_float(arg);
|
||||||
|
*imag = 0;
|
||||||
} else if (MP_OBJ_IS_TYPE(arg, &mp_type_float)) {
|
} else if (MP_OBJ_IS_TYPE(arg, &mp_type_float)) {
|
||||||
*real = mp_obj_float_get(arg);
|
*real = mp_obj_float_get(arg);
|
||||||
*imag = 0;
|
*imag = 0;
|
||||||
|
|
|
@ -57,6 +57,7 @@ mp_obj_t int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
|
||||||
} else if (MP_OBJ_IS_TYPE(lhs_in, &mp_type_int)) {
|
} else if (MP_OBJ_IS_TYPE(lhs_in, &mp_type_int)) {
|
||||||
zlhs = &((mp_obj_int_t*)lhs_in)->mpz;
|
zlhs = &((mp_obj_int_t*)lhs_in)->mpz;
|
||||||
} else {
|
} else {
|
||||||
|
// unsupported type
|
||||||
return MP_OBJ_NULL;
|
return MP_OBJ_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +67,14 @@ mp_obj_t int_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
|
||||||
zrhs = &z_int;
|
zrhs = &z_int;
|
||||||
} else if (MP_OBJ_IS_TYPE(rhs_in, &mp_type_int)) {
|
} else if (MP_OBJ_IS_TYPE(rhs_in, &mp_type_int)) {
|
||||||
zrhs = &((mp_obj_int_t*)rhs_in)->mpz;
|
zrhs = &((mp_obj_int_t*)rhs_in)->mpz;
|
||||||
|
#if MICROPY_ENABLE_FLOAT
|
||||||
|
} else if (MP_OBJ_IS_TYPE(rhs_in, &mp_type_float)) {
|
||||||
|
return mp_obj_float_binary_op(op, mpz_as_float(zlhs), rhs_in);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(rhs_in, &mp_type_complex)) {
|
||||||
|
return mp_obj_complex_binary_op(op, mpz_as_float(zlhs), 0, rhs_in);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
|
// unsupported type
|
||||||
return MP_OBJ_NULL;
|
return MP_OBJ_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue