The Python Oracle

Complex numbers in python

Become part of the top 3% of the developers by applying to Toptal https://topt.al/25cXVn

--

Music by Eric Matyas
https://www.soundimage.org
Track title: Riding Sky Waves v001

--

Chapters
00:00 Question
00:18 Accepted answer (Score 250)
01:21 Answer 2 (Score 17)
01:56 Answer 3 (Score 0)
02:46 Thank you

--

Full question
https://stackoverflow.com/questions/8370...

Accepted answer links:
[Reasoning found here.]: https://stackoverflow.com/q/24812444/775...
[The type of a complex number is ]: https://docs.python.org/2/library/stdtyp...
[The standard module ]: http://docs.python.org/library/cmath.htm...

Answer 2 links:
[complex numbers]: http://docs.python.org/library/stdtypes....

Answer 3 links:
[complex]: https://docs.python.org/3/library/functi...
[int]: https://docs.python.org/3/library/functi...
[float]: https://docs.python.org/3/library/functi...
[complex]: https://docs.python.org/3/library/functi...
[int]: https://docs.python.org/2.7/library/func...
[long]: https://docs.python.org/2.7/library/func...
[float]: https://docs.python.org/2.7/library/func...
[complex]: https://docs.python.org/2.7/library/func...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#python #types #complexnumbers

#avk47



ACCEPTED ANSWER

Score 263


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)



ANSWER 2

Score 19


The 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
>>> 



ANSWER 3

Score 0


Yes, complex type is supported in Python.

For numbers, Python 3 supports 3 types int, float and complex types as shown below:

print(type(100), isinstance(100, int))
print(type(100.23), isinstance(100.23, float))
print(type(100 + 2j), isinstance(100 + 2j, complex))

Output:

<class 'int'> True
<class 'float'> True
<class 'complex'> True

For numbers, Python 2 supperts 4 types int, long, float and complex types as shown below:

print(type(100), isinstance(100, int))
print(type(10000000000000000000), isinstance(10000000000000000000, long))
print(type(100.23), isinstance(100.23, float))
print(type(100 + 2j), isinstance(100 + 2j, complex))

Output:

(<type 'int'>, True)
(<type 'long'>, True)
(<type 'float'>, True)
(<type 'complex'>, True)