summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/objfloat.c2
-rw-r--r--tests/float/builtin_float_pow.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/py/objfloat.c b/py/objfloat.c
index 75212a4d2..e4d5a6570 100644
--- a/py/objfloat.c
+++ b/py/objfloat.c
@@ -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;
case MP_BINARY_OP_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;
}
if (lhs_val < 0 && rhs_val != MICROPY_FLOAT_C_FUN(floor)(rhs_val)) {
diff --git a/tests/float/builtin_float_pow.py b/tests/float/builtin_float_pow.py
new file mode 100644
index 000000000..2de1b4817
--- /dev/null
+++ b/tests/float/builtin_float_pow.py
@@ -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')))