ISO C99 also defines functions that perform basic operations on
complex numbers, such as decomposition and conjugation. The prototypes
for all these functions are in `complex.h`. All functions are
available in three variants, one for each of the three complex types.

— Function: double **creal** (`complex double z`)

— Function: floatcrealf(complex float z)

— Function: long doublecreall(complex long double z)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

These functions return the real part of the complex number

z.

— Function: double **cimag** (`complex double z`)

— Function: floatcimagf(complex float z)

— Function: long doublecimagl(complex long double z)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

These functions return the imaginary part of the complex number

z.

— Function: complex double **conj** (`complex double z`)

— Function: complex floatconjf(complex float z)

— Function: complex long doubleconjl(complex long double z)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

These functions return the conjugate value of the complex number

z. The conjugate of a complex number has the same real part and a negated imaginary part. In other words, ‘conj(a + bi) = a + -bi’.

— Function: double **carg** (`complex double z`)

— Function: floatcargf(complex float z)

— Function: long doublecargl(complex long double z)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

These functions return the argument of the complex number

z. The argument of a complex number is the angle in the complex plane between the positive real axis and a line passing through zero and the number. This angle is measured in the usual fashion and ranges from -π to π.

`carg`

has a branch cut along the negative real axis.

— Function: complex double **cproj** (`complex double z`)

— Function: complex floatcprojf(complex float z)

— Function: complex long doublecprojl(complex long double z)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

These functions return the projection of the complex value

zonto the Riemann sphere. Values with an infinite imaginary part are projected to positive infinity on the real axis, even if the real part is NaN. If the real part is infinite, the result is equivalent toINFINITY + I * copysign (0.0, cimag (z))