- Python Basic Tutorial
- Python - Home
- Python - Overview
- Python - Environment Setup
- Python - Basic Syntax
- Python - Comments
- Python - Variables
- Python - Data Types
- Python - Operators
- Python - Decision Making
- Python - Loops
- Python - Numbers
- Python - Strings
- Python - Lists
- Python - Tuples
- Python - Dictionary
- Python - Date & Time
- Python - Functions
- Python - Modules
- Python - Files I/O
- Python - Exceptions

# Python program for Complex Numbers

There are always two real roots of a positive number. For example, if x2 is 25, x is ±5. However, if x2 is -25 real roots do not exist. The square root of any negative number is the square root of its absolute value multiplied by an imaginary unit j = √−1.

Hence √−25 = √25 𝑋−1 = √25 × √−1 = 5j

A Complex number consists of real and imaginary component. It is represented as x+yj. Both x and y are real numbers. Y multiplied by imaginary unit forms an imaginary part of complex number.

Examples: 3+2j, 10-5.5J, 9.55+2.3j, 5.11e-6+4j

Python has a built-in complex data type. A complex number object can be created by literal representation as follows −

>>> x = 2+3j >>> type(x)

The complex number object has two attributes **real** (returns the real component) and **imag** (returns imaginary component excluding imaginary unit j)

>>> x.real 2.0 >>> x.imag 3.0

It also has **conjugate()** method. Conjugate of a complex number has the same real component and imaginary component with the opposite sign. Hence conjugate of 2+3j is 2-3j

>>> x.conjugate() (2-3j)

Python also has built-in complex() function which returns a complex number object. The function takes two parameters, one each for real and imaginary component. They can be of any numeric type (int, float or complex)

>>> complex(9,5) (9+5j) >>> complex(-6, -2.5) (-6-2.5j) >>> complex(1.5j, 2.5j) (-2.5+1.5j)

If only one parameter is given it is treated as real component, imaginary component is assumed to be zero.

>>> complex(15) (15+0j)

The function can also take a string as argument provided it contains numeric representation.

>>> complex('51') (51+0j) >>> complex('1.5') (1.5+0j)

Addition and subtraction of complex numbers is similar to that of integers or floats. Real and imaginary parts are added / subtracted separately.

>>> a = 6+4j >>> b = 3+6j >>> a+b (9+10j) >>> a-b (3-2j)

For multiplication consider complex number as a binomial and multiply each term in the first number by each term in the second number.

a = 6+4j b = 3+2j c = a*b c = (6+4j)*(3+2j) c = (18+12j+12j+8*-1) c = 10+24j

In Python console the result verifies this −

>>> a = 6+4j >>> b = 3+2j >>> a*b (10+24j)

Division of complex numbers is done as follows −

Let the two numbers be

a = 2+4j

b = 1-2j

and we want to calculate a/b.

Obtain conjugate of denominator which is 1+2j

Multiply numerator and denominator by the **conjugate** of the denominator to get result of division

c = a/b c = (2+4j)*(1+2j)/(1-2j)(1+2j) c = (2+4j+4j+8*-1)/(1+2j-2j-4*-1) c = (-6+8j)/5 c = -1.2+1.6j

Following Python console session verifies above treatment.

>>> a = 2+4j >>> b = 1-2j >>> a/b (-1.2+1.6j)

## The cmath module

Mathematical functions defined in math module of Python’s standard library process floating point numbers. For complex numbers, Python library contains cmath module.

Complex number z = x+yj is a Cartesian representation. It is internally represented in polar coordinates with its modulus r (as returned by built-in abs() function) and the phase angle Φ (pronounced as phi) which is counterclockwise angle in radians, between the x axis and line joining x with the origin. Following diagram illustrates polar representation of complex number −

Functions in cmath module allow conversion of Cartesian representation to polar representation and vice versa.

**polar()** − This function returns polar representation of a Cartesian notation of complex number. The return value is a tuple consisting of modulus and phase.

>>> import cmath >>> a = 2+4j >>> cmath.polar(a) (4.47213595499958, 1.1071487177940904)

Note that the modulus is returned by abs() function

>>> abs(a) 4.47213595499958

**phase()** − This function returns counterclockwise angle between x axis and segment joining **a** with origin. The angle is represented in radians and is between π and -π

>>> cmath.phase(a) 1.1071487177940904 z = x+yj Φ

**rect()** − This function returns Cartesian representation of complex number represented in polar form i.e. in modulus and phase

>>> cmath.rect(4.47213595499958, 1.1071487177940904) (2.0000000000000004+4j)

The cmath module contains alternatives for all mathematical functions defined in math module. There are trigonometric and logarithmic functions as explained below −

**cmath.sin()** − This function returns the sine trigonometric ratio for phase angle represented in radians.

>>> import cmath >>> a = 2+4j >>> p = cmath.phase(a) >>> cmath.sin(p) (0.8944271909999159+0j)

Similarly, functions for other ratios cos(), tan(), asin(), acos() and atan() are defined in cmath module.

**cmath.exp()** − Similar to math.exp(), this function returns ex where x is a complex number and e is 2.71828

>>> cmath.exp(a) (-1.1312043837568135+2.4717266720048188j)

**cmath.log10()** − This function calculates log value of complex number taking base as 10

>>> a = 1+2j >>> cmath.log10(a) (0.3494850021680094+0.480828578784234j)

**cmath.sqrt()** − This function returns square root of complex number.

>>> cmath.sqrt(a) (1.272019649514069+0.7861513777574233j)

In this article we learned important features of Python’s complex number data type and how arithmetic operations can be done on it. We also explored various functions defined in cmath module.

- Related Articles
- Complex Numbers in Python?
- Python program to define class for complex number objects
- Proj() function for Complex Numbers in C++
- Java Program to Add Two Complex numbers
- Haskell program to add two complex numbers
- Kotlin Program to Add Two Complex numbers
- Python Program for Fibonacci numbers
- How to Plot Complex Numbers in Python?
- Program to Add Two Complex Numbers in C
- How can we use complex numbers in Python?
- How does modulus work with complex numbers in Python?
- Replace infinity with large finite numbers and fill NaN for complex input values in Python
- Complex numbers in C++
- Complex Numbers in C#
- Complex Numbers in Java