# ValueError: negative number cannot be raised to a fractional power

Posted on

### Question :

ValueError: negative number cannot be raised to a fractional power

When I tried this in terminal

``````>>> (-3.66/26.32)**0.2
``````

I got the following error

``````Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: negative number cannot be raised to a fractional power
``````

However, I am able to do this in two steps like,

``````>>> (-3.66/26.32)
-0.13905775075987842
>>> -0.13905775075987842 ** 0.2
-0.6739676327771593
``````

Why this behaviour? What is the way to solve this in single line?

Raising to a power takes precedence over the unary minus sign.

So you have `-(0.13905775075987842 ** 0.2)` and not `(-0.13905775075987842) ** 0.2` as you expect:

``````>>> -0.13905775075987842 ** 0.2
-0.6739676327771593
>>> (-0.13905775075987842) ** 0.2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: negative number cannot be raised to a fractional power
``````

If you want it to work you should write `(-3.66/26.32 + 0j)**0.2`

``````>>> (-3.66/26.32 + 0j)**0.2
(0.5452512685753758+0.39614823506888347j)
``````

Or switch Python 3 as noted by @TimPietzcker.

Switch to Python 3 which automatically promotes the result to a complex number:

``````>>> (-3.66/26.32)**0.2
(0.5452512685753758+0.39614823506888347j)
``````