module Complex:`sig`

..`end`

Complex numbers.

This module provides arithmetic operations on complex numbers.
Complex numbers are represented by their real and imaginary parts
(cartesian representation). Each part is represented by a
double-precision floating-point number (type `float`

).

`type `

t = {

` ` |
`re : ` |

` ` |
`im : ` |

The type of complex numbers. `re`

is the real part and `im`

the
imaginary part.

`val zero : ``t`

The complex number `0`

.

`val one : ``t`

The complex number `1`

.

`val i : ``t`

The complex number `i`

.

`val neg : ``t -> t`

Unary negation.

`val conj : ``t -> t`

Conjugate: given the complex `x + i.y`

, returns `x - i.y`

.

`val add : ``t -> t -> t`

Addition

`val sub : ``t -> t -> t`

Subtraction

`val mul : ``t -> t -> t`

Multiplication

`val inv : ``t -> t`

Multiplicative inverse (`1/z`

).

`val div : ``t -> t -> t`

Division

`val sqrt : ``t -> t`

Square root. The result `x + i.y`

is such that `x > 0`

or
`x = 0`

and `y >= 0`

.
This function has a discontinuity along the negative real axis.

`val norm2 : ``t -> float`

Norm squared: given `x + i.y`

, returns `x^2 + y^2`

.

`val norm : ``t -> float`

Norm: given `x + i.y`

, returns `sqrt(x^2 + y^2)`

.

`val arg : ``t -> float`

Argument. 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 ranges from
`-pi`

to `pi`

. This function has a discontinuity along the
negative real axis.

`val polar : ``float -> float -> t`

`polar norm arg`

returns the complex having norm `norm`

and argument `arg`

.

`val exp : ``t -> t`

Exponentiation. `exp z`

returns `e`

to the `z`

power.

`val log : ``t -> t`

Natural logarithm (in base `e`

).

`val pow : ``t -> t -> t`

Power function. `pow z1 z2`

returns `z1`

to the `z2`

power.