Mark Dickinson added the comment:

This is something that comes up repeatedly on the bug tracker. There's no bug 
here in the complex type or the repr. What there *is* is a limitation resulting 
from the fact that Python doesn't have *imaginary* literals, only *complex* 
literals. So in:

-1-0j

the 0j is already a complex number with both real and imaginary parts equal to 
0.0. Then -1 gets promoted to a complex number with real part -1 and imaginary 
part 0.0.  And now you're doing:

complex(-1.0, 0.0) - complex(0.0, 0.0)

which naturally gives an imaginary part of +0.0 rather than 0.0.

You'll see the same issue in C: there was an attempt to fix it in C99 by 
introducing Imaginary types, but those Imaginary types haven't been widely 
adopted. The most recent reincarnation of the C standard finally introduces a 
macro that lets you instantiate a complex number in terms of its real and 
imaginary components (instead of doing real_part + imag_part * I); this is 
something that Python already has in the form of the complex constructor.

Closing as not a bug.

----------
resolution:  -> not a bug
status: open -> closed

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue25839>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to