sig
  type t = Complex.t = { re : float; im : float; }
  val zero : Reins.Types.Complex.t
  val one : Reins.Types.Complex.t
  val i : Reins.Types.Complex.t
  val neg : Reins.Types.Complex.t -> Reins.Types.Complex.t
  val conj : Reins.Types.Complex.t -> Reins.Types.Complex.t
  val add :
    Reins.Types.Complex.t -> Reins.Types.Complex.t -> Reins.Types.Complex.t
  val sub :
    Reins.Types.Complex.t -> Reins.Types.Complex.t -> Reins.Types.Complex.t
  val mul :
    Reins.Types.Complex.t -> Reins.Types.Complex.t -> Reins.Types.Complex.t
  val inv : Reins.Types.Complex.t -> Reins.Types.Complex.t
  val div :
    Reins.Types.Complex.t -> Reins.Types.Complex.t -> Reins.Types.Complex.t
  val sqrt : Reins.Types.Complex.t -> Reins.Types.Complex.t
  val norm2 : Reins.Types.Complex.t -> float
  val norm : Reins.Types.Complex.t -> float
  val arg : Reins.Types.Complex.t -> float
  val polar : float -> float -> Reins.Types.Complex.t
  val exp : Reins.Types.Complex.t -> Reins.Types.Complex.t
  val log : Reins.Types.Complex.t -> Reins.Types.Complex.t
  val pow :
    Reins.Types.Complex.t -> Reins.Types.Complex.t -> Reins.Types.Complex.t
  val equal : '-> '-> bool
  val hash : '-> int
  val gen : ?size:'-> Random.State.t -> Complex.t
end