Are complex numbers a supported data-type in python? If so, how do you use them?
32 Answers
In python, you can put ‘j’ or ‘J’ after a number to make it imaginary, so you can write complex literals easily:
>>> 1j 1j >>> 1J 1j >>> 1j * 1j (-1+0j) The ‘j’ suffix comes from electrical engineering, where the variable ‘i’ is usually used for current. (Reasoning found here.)
The type of a complex number is complex, and you can use the type as a constructor if you prefer:
>>> complex(2,3) (2+3j) A complex number has some built-in accessors:
>>> z = 2+3j >>> z.real 2.0 >>> z.imag 3.0 >>> z.conjugate() (2-3j) Several built-in functions support complex numbers:
>>> abs(3 + 4j) 5.0 >>> pow(3 + 4j, 2) (-7+24j) The standard module cmath has more functions that handle complex numbers:
>>> import cmath >>> cmath.sin(2 + 3j) (9.15449914691143-4.168906959966565j) 2The following example for complex numbers should be self explanatory including the error message at the end
>>> x=complex(1,2) >>> print x (1+2j) >>> y=complex(3,4) >>> print y (3+4j) >>> z=x+y >>> print x (1+2j) >>> print z (4+6j) >>> z=x*y >>> print z (-5+10j) >>> z=x/y >>> print z (0.44+0.08j) >>> print x.conjugate() (1-2j) >>> print x.imag 2.0 >>> print x.real 1.0 >>> print x>y Traceback (most recent call last): File "<pyshell#149>", line 1, in <module> print x>y TypeError: no ordering relation is defined for complex numbers >>> print x==y False >>>