[Python-Dev] return type of __complex__
Steven D'Aprano
steve at pearwood.info
Sun Oct 21 13:02:17 CEST 2012
More information about the Python-Dev mailing list
Sun Oct 21 13:02:17 CEST 2012
- Previous message: [Python-Dev] return type of __complex__
- Next message: [Python-Dev] return type of __complex__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 21/10/12 21:11, Antoine Pitrou wrote: > 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 "<stdin>", line 1, in<module> >>> 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. Precisely. > I'm also not sure why we have several variants of the power operator: > **, built-in pow(), math.pow(). In Python 3.3, math.pow is the builtin pow. Presumably for backwards compatibility reasons when they were different? If so, it was a LONG time ago: [steve at ando ~]$ python1.5 Python 1.5.2 (#1, Aug 27 2012, 09:09:18) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import math >>> math.pow <built-in function pow> And yet strangely there's never been a cmath.pow. -- Steven
- Previous message: [Python-Dev] return type of __complex__
- Next message: [Python-Dev] return type of __complex__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list