diff options
author | Damien George <damien.p.george@gmail.com> | 2017-02-03 00:01:45 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-02-03 00:01:45 +1100 |
commit | 3ed0e5e5d4af1ad2603fa1b87935cf65a27b083e (patch) | |
tree | 747cba8e65cbb6f29360ee79ecc52ead3995a5fd /py | |
parent | 4b8ec5256d3d27b6cd69afeda62d645df4719ea9 (diff) | |
download | micropython-3ed0e5e5d4af1ad2603fa1b87935cf65a27b083e.tar.gz micropython-3ed0e5e5d4af1ad2603fa1b87935cf65a27b083e.zip |
py/objcomplex: Correctly handle case of 0j to power of something.
0j to the power of negative now raises ZeroDivisionError, and 0j to the
power of positive returns 0.
Diffstat (limited to 'py')
-rw-r--r-- | py/objcomplex.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/py/objcomplex.c b/py/objcomplex.c index 96be25255c..4c05886f02 100644 --- a/py/objcomplex.c +++ b/py/objcomplex.c @@ -222,8 +222,8 @@ mp_obj_t mp_obj_complex_binary_op(mp_uint_t op, mp_float_t lhs_real, mp_float_t // = exp(x3)*(cos(y3) + i*sin(y3)) mp_float_t abs1 = MICROPY_FLOAT_C_FUN(sqrt)(lhs_real*lhs_real + lhs_imag*lhs_imag); if (abs1 == 0) { - if (rhs_imag == 0) { - lhs_real = 1; + if (rhs_imag == 0 && rhs_real >= 0) { + lhs_real = 1 ? rhs_real == 0 : 0; rhs_real = 0; } else { mp_raise_msg(&mp_type_ZeroDivisionError, "0.0 to a complex power"); |