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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4