---
name: "complex"
section: "5"
platform: "linux"
package: "manpages"
version: "3.27-1"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/complex/7"
---

# complex(5)

basics of complex mathematics

Part of [complex(7)](/complex/7.md).

## NAME

complex - basics of complex mathematics

## SYNOPSIS

**#include \<complex.h\>**

## DESCRIPTION

Complex numbers are numbers of the form z = a+b\*i, where a and b are real numbers and i = sqrt(-1), so that i\*i = -1.\
 There are other ways to represent that number. The pair (a,b) of real numbers may be viewed as a point in the plane, given by X- and Y-coordinates. This same point may also be described by giving the pair of real numbers (r,phi), where r is the distance to the origin O, and phi the angle between the X-axis and the line Oz. Now z = r\*exp(i\*phi) = r\*(cos(phi)+i\*sin(phi)).

The basic operations are defined on z = a+b\*i and w = c+d\*i as:

- **addition: z+w = (a+c) + (b+d)\*i**

  - **multiplication: z\*w = (a\*c - b\*d) + (a\*d + b\*c)\*i**

  - **division: z/w = ((a\*c + b\*d)/(c\*c + d\*d)) + ((b\*c - a\*d)/(c\*c + d\*d))\*i**

  Nearly all math function have a complex counterpart but there are some complex-only functions.

## EXAMPLE

Your C-compiler can work with complex numbers if it supports the C99 standard. Link with *-lm*. The imaginary unit is represented by I.

```
/* check that exp(i * pi) == -1 */
#include <math.h>        /* for atan */
#include <stdio.h>
#include <complex.h>
int
main(void)
{
    double pi = 4 * atan(1.0);
    double complex z = cexp(I * pi);
    printf("%f + %f * i\n", creal(z), cimag(z));
}
```

## SEE ALSO

[**cabs**(3)](/cabs/3.md), [**carg**(3)](/carg/3.md), [**cexp**(3)](/cexp/3.md), [**cimag**(3)](/cimag/3.md), [**creal**(3)](/creal/3.md)

## COLOPHON

This page is part of release 3.27 of the Linux *man-pages* project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
