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 |    | re :  | 
|    | im :  | 
}
The type of complex numbers.  re is the real part and im the
    imaginary part.
val zero : tThe complex number 0.
val one : tThe complex number 1.
val i : tThe complex number i.
val neg : t -> tUnary negation.
val conj : t -> tConjugate: given the complex x + i.y, returns x - i.y.
val add : t -> t -> tAddition
val sub : t -> t -> tSubtraction
val mul : t -> t -> tMultiplication
val inv : t -> tMultiplicative inverse (1/z).
val div : t -> t -> tDivision
val sqrt : t -> tSquare 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 -> floatNorm squared: given x + i.y, returns x^2 + y^2.
val norm : t -> floatNorm: given x + i.y, returns sqrt(x^2 + y^2).
val arg : t -> floatArgument.  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 -> tpolar norm arg returns the complex having norm norm
    and argument arg.
val exp : t -> tExponentiation.  exp z returns e to the z power.
val log : t -> tNatural logarithm (in base e).
val pow : t -> t -> tPower function.  pow z1 z2 returns z1 to the z2 power.