Skip to content
Snippets Groups Projects
Commit bbb08431 authored by Damien George's avatar Damien George
Browse files

py/objfloat: Fix case of raising 0 to -infinity.

It was raising an exception but it should return infinity.
parent b75cb839
Branches
No related tags found
No related merge requests found
...@@ -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 ...@@ -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)) {
......
# 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')))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment