My Python has started to imagine that square root of -1 is 1, so be careful with ** and unary -.

print (-1**0.5) ## ** binds stronger than unary minus!

i=-1
print "Square root of %i is %f" (i,i**0.5) # gives proper error
""" Output:
-1.0

Traceback (most recent call last):
File "D:/test/sqrt-1.py", line 4, in <module>
print "Square root of %i is %f" (i,i**0.5) # gives proper error
ValueError: negative number cannot be raised to a fractional power
"""

Also (and more difficult to see):

>>> i=1
>>> -i**0.5
-1.0
>>> (-i)**0.5

Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
(-i)**0.5
ValueError: negative number cannot be raised to a fractional power
>>>

Edited by pyTony: n/a

6
Contributors
12
Replies
13
Views
7 Years
Discussion Span
Last Post by Skyelher

It has been reportet as a bug,and closed with this answer.

This is because the negative sign is evaluated after the power. (-1)**2
works correctly.

http://bugs.python.org/issue4224

Works correctly.
Order of operations.

This also works:

(-1+0j)**.5

without error.

Edited by jcao219: n/a

I gave the solution myself but wanted to warn that not to use ** without ().

Works correctly.
Order of operations.

This also works:

(-1+0j)**.5

without error.

sqrt(-1) = j, the basic definition of complex numbers, so interesting thing is that the result is not actually exact:

>>> (-1+0j)**.5
(6.123233995736766e-17+1j)

Edited by pyTony: n/a

lol i used to get marks deducted for not encircling -1 in brackets in math class

Edited by ultimatebuster: n/a

Was one of the best in my age class in high school, but for me it is not obvious that unary minus would not have highest priority. You must have had good teacher.

Or maybe I am only getting senile:S

you have no idea lol.
This would be 1 mark off:

[TEX]\frac{1}{2}^2[/TEX]

The correct form would be:
[TEX](\frac{1}{2})^2[/TEX]

I'm still in high school, taking pre-calculus next year.
I just learned about imaginary numbers (-1)**.5 last year in Algebra class.

I just took Algebra 2/ Trig, and this was extremely annoying. I knew to do it in my head, but, just like ultimatebuster, my teacher took off for it.
I get Calc next year, and i hope there isn't any of this

It has been reportet as a bug,and closed with this answer.

It seems to me like it's a matter of order of operations... Why is it a bug, then?

Why is it a bug, then?

Everyone can report what the think is a bug,that dos not mean is a real bug.
This bug report was closed,and was not a bug.
Just something that easy can be misunderstood -1 need to be (-1) to work correct.

Edited by snippsat: n/a

Everyone can report what the think is a bug,that dos not mean is a real bug.
This bug report was closed,and was not a bug.
Just something that easy can be misunderstood -1 need to be (-1) to work correct.

Thanks for clearing it up...

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.