sig
  type vec = [ `V of Vector.vector | `VF of Vector_flat.vector ]
  val vec_convert :
    ?protect:bool ->
    [< `A of float array | `V of Vector.vector | `VF of Vector_flat.vector ] ->
    [> Vectmat.vec ]
  type mat = [ `M of Matrix.matrix | `MF of Matrix_flat.matrix ]
  val mat_convert :
    ?protect:bool ->
    [< `A of float array * int * int
     | `AA of float array array
     | `M of Matrix.matrix
     | `MF of Matrix_flat.matrix ] ->
    [> Vectmat.mat ]
  val mat_flat :
    ?protect:bool ->
    [< `A of float array * int * int
     | `AA of float array array
     | `M of Matrix.matrix
     | `MF of Matrix_flat.matrix ] ->
    Matrix_flat.matrix
  type cvec =
      [ `CV of Vector_complex.vector | `CVF of Vector_complex_flat.vector ]
  type cmat =
      [ `CM of Matrix_complex.matrix | `CMF of Matrix_complex_flat.matrix ]
  val cmat_convert :
    ?protect:bool ->
    [< `CA of Gsl_complex.complex_array * int * int
     | `CM of Matrix_complex.matrix
     | `CMF of Matrix_complex_flat.matrix ] ->
    [> Vectmat.cmat ]
  val length :
    [< `CV of Vector_complex.vector
     | `CVF of Vector_complex_flat.vector
     | `V of Vector.vector
     | `VF of Vector_flat.vector ] ->
    int
  val to_array : [< Vectmat.vec ] -> float array
  val v_copy : [< Vectmat.vec ] -> [> Vectmat.vec ]
  val subvector : [< Vectmat.vec ] -> off:int -> len:int -> [> Vectmat.vec ]
  external v_memcpy : [< Vectmat.vec ] -> [< Vectmat.vec ] -> unit
    = "ml_gsl_vector_memcpy"
  external v_add : [< Vectmat.vec ] -> [< Vectmat.vec ] -> unit
    = "ml_gsl_vector_add"
  external v_sub : [< Vectmat.vec ] -> [< Vectmat.vec ] -> unit
    = "ml_gsl_vector_sub"
  external v_mul : [< Vectmat.vec ] -> [< Vectmat.vec ] -> unit
    = "ml_gsl_vector_mul"
  external v_div : [< Vectmat.vec ] -> [< Vectmat.vec ] -> unit
    = "ml_gsl_vector_div"
  external v_max : [< Vectmat.vec ] -> float = "ml_gsl_vector_max"
  external v_min : [< Vectmat.vec ] -> float = "ml_gsl_vector_min"
  external v_minmax : [< Vectmat.vec ] -> float * float
    = "ml_gsl_vector_minmax"
  external v_max_index : [< Vectmat.vec ] -> int = "ml_gsl_vector_maxindex"
  external v_min_index : [< Vectmat.vec ] -> int = "ml_gsl_vector_minindex"
  external v_minmax_index : [< Vectmat.vec ] -> int * int
    = "ml_gsl_vector_minmaxindex"
  val dims :
    [< `CM of Matrix_complex.matrix
     | `CMF of Matrix_complex_flat.matrix
     | `M of Matrix.matrix
     | `MF of Matrix_flat.matrix ] ->
    int * int
  val tmp : [< Vectmat.mat ] -> [> `M of Matrix.matrix ]
  val to_arrays : [< Vectmat.mat ] -> float array array
  val m_copy : [< Vectmat.mat ] -> [> Vectmat.mat ]
  external m_memcpy : [< Vectmat.mat ] -> [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_memcpy"
  external m_add : [< Vectmat.mat ] -> [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_add"
  external m_sub : [< Vectmat.mat ] -> [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_sub"
  external m_mul : [< Vectmat.mat ] -> [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_mul"
  external m_div : [< Vectmat.mat ] -> [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_div"
  external m_add_diagonal : [< Vectmat.mat ] -> float -> unit
    = "ml_gsl_matrix_add_diagonal"
  external swap_rows : [< Vectmat.mat ] -> int -> int -> unit
    = "ml_gsl_matrix_swap_rows"
  external swap_columns : [< Vectmat.mat ] -> int -> int -> unit
    = "ml_gsl_matrix_swap_columns"
  external swap_rowcol : [< Vectmat.mat ] -> int -> int -> unit
    = "ml_gsl_matrix_swap_rowcol"
  external transpose : [< Vectmat.mat ] -> [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_transpose_memcpy"
  external transpose_in_place : [< Vectmat.mat ] -> unit
    = "ml_gsl_matrix_transpose"
  val is_null :
    [< `M of Matrix.matrix
     | `MF of Matrix_flat.matrix
     | `V of Vector.vector
     | `VF of Vector_flat.vector ] ->
    bool
  val scale :
    [< `M of Matrix.matrix
     | `MF of Matrix_flat.matrix
     | `V of Vector.vector
     | `VF of Vector_flat.vector ] ->
    float -> unit
  val add_constant :
    [< `M of Matrix.matrix
     | `MF of Matrix_flat.matrix
     | `V of Vector.vector
     | `VF of Vector_flat.vector ] ->
    float -> unit
end