[Python-Dev] return type of complex (original) (raw)

Antoine Pitrou solipsis at pitrou.net
Sun Oct 21 12:11:01 CEST 2012


On Sun, 21 Oct 2012 13:38:48 +1100 Chris Angelico <rosuav at gmail.com> wrote:

On Sun, Oct 21, 2012 at 12:53 PM, Steven D'Aprano <steve at pearwood.info> wrote: > Python 2.x legitimately distinguished between floats and complex, e.g.: > > py> (-100.0)**0.5 > > Traceback (most recent call last): > File "", line 1, in > ValueError: negative number cannot be raised to a fractional power > > If you wanted a complex result, you can explicitly ask for one: > > py> (-100.0+0j)**0.5 > (6.123031769111886e-16+10j) > > > I see that behaviour is changed in Python 3.

Python 2 (future directives aside) also required you to explicitly ask for floating point. That was also changed in Python 3. That doesn't mean that this is necessarily the right thing to do, but it does have precedent. The square root of a negative number is by nature a complex number.

In the set of complex numbers, it is. But in the set of float numbers, a negative number has no square root. I think Steven may be worried about the impact on people who don't know about complex numbers, which is a reasonable concern.

I'm also not sure why we have several variants of the power operator: **, built-in pow(), math.pow().

Regards

Antoine.



More information about the Python-Dev mailing list