Tim Peters wrote:

>  complex_new() ends with:

>       cr.real -= ci.imag;
>       cr.imag += ci.real;

> and I have no idea what that thinks it's doing.  Surely this isn't intended?!:

I think it is.  python.org/sf/1642844 adds comments to make it less unclear.

>  >>> complex(complex(1.0, 2.0), complex(10.0, 20.0))
>  (-19+12j)

>  WTF?

    >>> help(complex)
    Help on class complex in module __builtin__:

    class complex(object)
     |  complex(real[, imag]) -> complex number
     |
     |  Create a complex number from a real part and an optional imaginary part.
     |  This is equivalent to (real + imag*1j) where imag defaults to 0.

If "real" and "imag" are themselves complex numbers, then normalizing
the result will move the imaginary portion of the "real" vector into
the imaginary part and vice versa.

Note that changing this (to discard the imaginary parts) would break
passing complex numbers to their own constructor.

    >>> a=complex(1,2)
    >>> b=complex(a)
    >>> a==b
    True

-jJ
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to