Complex numbers are one of those topics a lot of people don't understand but are ridiculously powerful and have numerous applications in the real world, despite being called "imaginary numbers."

A *complex number* is a mathematical object of the form,

where \(i = \sqrt{-1}\). Naturally, Julia offers great out-of-the-box support for complex numbers.

Complex numbers can be instantiated by using the `Complex`

object or through the syntactic sugar `a+bim`

where \(a\) and \(b\) are numerals.

```
Complex(3, 4) == 3+4im
> true
```

We can extract the real or imaginary parts using `real`

and `imag`

.

```
z = 3+4im
z == real(z) + imag(z)*im
> true
```

Computing the length or *modulus* of a complex number is done with the `abs`

function.

Recall that the formula for the modulus of a complex number uses the Pythagorean theorem,

\[ |z| = \sqrt{\frak{Re}(z)^2 + \frak{Im}(z)^2}\,.\]```
abs(z)
> 5.0
```

We can also compute the squared modulus more efficiently than if we were to square the result of `abs`

with `abs2`

```
abs2(z)
> 25
```

We can compute the complex conjugate using `conj`

.

```
conj(z)
> 3 - 4im
```

We can compute the angle between the real and imaginary components using `angle`

and convert it from radians to degrees using `rad2deg`

or back using `deg2rad`

.

```
angle(z) |> rad2deg
> 53.13010235415598
```

We can perform all the normal arithmetic operations with complex numbers.

```
z1 = 2+3im;
z2 = -3-2im;
@show z1 + z2
> z1 + z2 = -1 + 1im
@show z1 - z2
> z1 - z2 = 5 + 5im
@show 2*z1
> 2z1 = 4 + 6im
@show z1 * z2
> z1 * z2 = 0 - 13im
@show z1 / z2
> z1 / z2 = -0.9230769230769231 - 0.38461538461538464im
@show z1^2
> z1 ^ 2 = -5 + 12im
```

We can perform all of the normal trig and exponential functions with complex numbers too.

```
@show sin(z)
> sin(z) = 3.853738037919377 - 27.016813258003932im
@show cos(z)
> cos(z) = -27.034945603074224 - 3.851153334811777im
@show tan(z)
> tan(z) = -0.0001873462046294785 + 0.9993559873814731im
@show exp(z)
> exp(z) = -13.128783081462158 - 15.200784463067954im
@show log(z)
> log(z) = 1.6094379124341003 + 0.9272952180016122im
```

© Daniel Marvin. Last modified: July 19, 2021.