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. I'm also not sure why we have several variants of the power operator: **, built-in pow(), math.pow(). Regards Antoine.
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