diff options
author | Damien George <damien.p.george@gmail.com> | 2017-02-03 00:01:37 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-02-03 00:01:37 +1100 |
commit | 4b8ec5256d3d27b6cd69afeda62d645df4719ea9 (patch) | |
tree | 296165401eacd81b0d9fb18ec9fd20eed340d8ff | |
parent | 05c70fdfba7e5c0f9104c927e29822a8da8c467f (diff) | |
download | micropython-4b8ec5256d3d27b6cd69afeda62d645df4719ea9.tar.gz micropython-4b8ec5256d3d27b6cd69afeda62d645df4719ea9.zip |
py/objfloat: Raise ZeroDivisionError for 0 to negative power.
-rw-r--r-- | py/objfloat.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/py/objfloat.c b/py/objfloat.c index 73d07feac8..9292490a9e 100644 --- a/py/objfloat.c +++ b/py/objfloat.c @@ -228,7 +228,12 @@ mp_obj_t mp_obj_float_binary_op(mp_uint_t op, mp_float_t lhs_val, mp_obj_t rhs_i } break; case MP_BINARY_OP_POWER: - case MP_BINARY_OP_INPLACE_POWER: lhs_val = MICROPY_FLOAT_C_FUN(pow)(lhs_val, rhs_val); break; + case MP_BINARY_OP_INPLACE_POWER: + if (lhs_val == 0 && rhs_val < 0) { + goto zero_division_error; + } + lhs_val = MICROPY_FLOAT_C_FUN(pow)(lhs_val, rhs_val); + break; case MP_BINARY_OP_DIVMOD: { if (rhs_val == 0) { goto zero_division_error; |