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