py/objfloat: Fix case of raising 0 to -infinity.
It was raising an exception but it should return infinity.
This commit is contained in:
parent
b75cb8392b
commit
bbb08431f3
|
@ -293,7 +293,7 @@ mp_obj_t mp_obj_float_binary_op(mp_binary_op_t op, mp_float_t lhs_val, mp_obj_t
|
||||||
break;
|
break;
|
||||||
case MP_BINARY_OP_POWER:
|
case MP_BINARY_OP_POWER:
|
||||||
case MP_BINARY_OP_INPLACE_POWER:
|
case MP_BINARY_OP_INPLACE_POWER:
|
||||||
if (lhs_val == 0 && rhs_val < 0) {
|
if (lhs_val == 0 && rhs_val < 0 && !isinf(rhs_val)) {
|
||||||
goto zero_division_error;
|
goto zero_division_error;
|
||||||
}
|
}
|
||||||
if (lhs_val < 0 && rhs_val != MICROPY_FLOAT_C_FUN(floor)(rhs_val)) {
|
if (lhs_val < 0 && rhs_val != MICROPY_FLOAT_C_FUN(floor)(rhs_val)) {
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# test builtin pow function with float args
|
||||||
|
|
||||||
|
print(pow(0.0, 0.0))
|
||||||
|
print(pow(0, 1.0))
|
||||||
|
print(pow(1.0, 1))
|
||||||
|
print(pow(2.0, 3.0))
|
||||||
|
print(pow(2.0, -4.0))
|
||||||
|
|
||||||
|
print(pow(0.0, float('inf')))
|
||||||
|
print(pow(0.0, float('-inf')))
|
||||||
|
print(pow(0.0, float('nan')))
|
Loading…
Reference in New Issue