sig
  val ( ++ ) :
    float * float * float -> float * float * float -> float * float * float
  val ( -- ) :
    float * float * float -> float * float * float -> float * float * float
  val ( *+ ) : float * float * float -> float * float * float -> float
  val ( ** ) : float -> float * float * float -> float * float * float
  val ( *^ ) :
    float * float * float -> float * float * float -> float * float * float
  val norm2 : float * float * float -> float
  val norm : float * float * float -> float
  val normalize :
    ?with_norm:float -> float * float * float -> float * float * float
  val det :
    float * float * float ->
    float * float * float -> float * float * float -> float
end