Rom Rom Rom Rom - 4 months ago 11
Python Question

Error with pow: "can't convert complex to float"

i have this problem with my Python code :

from math import *

m = pow(complex(1,2)*complex(3,0) + complex(1,0),complex(-1,0));
TypeError: can't convert complex to float


Does anyone know how to solve this problem ?
Thanks a lot !

Answer

The problem is that you are using from math import *. This shadows the built-in pow with a version that doesn't support complex numbers.

>>> pow(1+1j, 1)
(1+1j)
>>> import math
>>> math.pow(1+1j,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float

from <x> import * is usually considered bad practice, and cases like this are why.

Instead, you should use import math, and reference all your math functions as, e.g. math.sqrt

Alternatively, you can use ** instead of pow:

>>> 1j ** 2
(-1+0j)
Comments