summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-02-03 00:01:45 +1100
committerDamien George <damien.p.george@gmail.com>2017-02-03 00:01:45 +1100
commit3ed0e5e5d4af1ad2603fa1b87935cf65a27b083e (patch)
tree747cba8e65cbb6f29360ee79ecc52ead3995a5fd /py
parent4b8ec5256d3d27b6cd69afeda62d645df4719ea9 (diff)
downloadmicropython-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.c4
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");