Next: Parsing of Numbers, Previous: Complex Numbers, Up: Arithmetic

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)

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)

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)

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)

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 0 to 2π.

`carg`

has a branch cut along the positive real axis.

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

— Function: complex floatcprojf(complex float z)

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

These functions return the projection of the complex value

zonto the Riemann sphere. Values with a 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))