sig
  module Io :
    sig
      module Context :
        sig
          type t
          val create : int -> Lacaml.Io.Context.t
          val ellipsis_default : string Pervasives.ref
          val vertical_default : Lacaml.Io.Context.t option Pervasives.ref
          val horizontal_default : Lacaml.Io.Context.t option Pervasives.ref
          val set_dim_defaults : Lacaml.Io.Context.t option -> unit
        end
      val pp_mat_gen :
        ?pp_open:(Format.formatter -> unit) ->
        ?pp_close:(Format.formatter -> unit) ->
        ?pp_head:(Format.formatter -> int -> unit) ->
        ?pp_foot:(Format.formatter -> int -> unit) ->
        ?pp_end_row:(Format.formatter -> int -> unit) ->
        ?pp_end_col:(Format.formatter -> row:int -> col:int -> unit) ->
        ?pp_left:(Format.formatter -> int -> unit) ->
        ?pp_right:(Format.formatter -> int -> unit) ->
        ?pad:char option ->
        ?ellipsis:string ->
        ?vertical_context:Lacaml.Io.Context.t option ->
        ?horizontal_context:Lacaml.Io.Context.t option ->
        (Format.formatter -> 'el -> unit) ->
        Format.formatter ->
        ('el, 'a, Bigarray.fortran_layout) Bigarray.Array2.t -> unit
      type 'el pp_el_default =
          (Format.formatter -> 'el -> unit) Pervasives.ref
      val pp_float_el_default : float Lacaml.Io.pp_el_default
      val pp_complex_el_default : Complex.t Lacaml.Io.pp_el_default
      val pp_int32_el : Format.formatter -> int32 -> unit
      type ('el, 'elt) pp_vec =
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array1.t -> unit
      val pp_fvec : (float, 'elt) Lacaml.Io.pp_vec
      val pp_cvec : (Complex.t, 'elt) Lacaml.Io.pp_vec
      val pp_ivec : (int32, 'elt) Lacaml.Io.pp_vec
      val pp_rfvec : (float, 'elt) Lacaml.Io.pp_vec
      val pp_rcvec : (Complex.t, 'elt) Lacaml.Io.pp_vec
      val pp_rivec : (int32, 'elt) Lacaml.Io.pp_vec
      type ('el, 'elt) pp_mat =
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array2.t -> unit
      val pp_fmat : (float, 'elt) Lacaml.Io.pp_mat
      val pp_cmat : (Complex.t, 'elt) Lacaml.Io.pp_mat
      val pp_imat : (int32, 'elt) Lacaml.Io.pp_mat
      type ('el, 'elt) pp_labeled_vec =
          ?pp_head:(Format.formatter -> int -> unit) ->
          ?pp_foot:(Format.formatter -> int -> unit) ->
          ?pp_left:(Format.formatter -> int -> unit) option ->
          ?pp_right:(Format.formatter -> int -> unit) ->
          ?pad:char option ->
          ?ellipsis:string ->
          ?vertical_context:Lacaml.Io.Context.t option ->
          ?horizontal_context:Lacaml.Io.Context.t option ->
          unit ->
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array1.t -> unit
      val pp_labeled_fvec : (float, 'elt) Lacaml.Io.pp_labeled_vec
      val pp_labeled_cvec : (Complex.t, 'elt) Lacaml.Io.pp_labeled_vec
      val pp_labeled_ivec : (int32, 'elt) Lacaml.Io.pp_labeled_vec
      val pp_labeled_rfvec : (float, 'elt) Lacaml.Io.pp_labeled_vec
      val pp_labeled_rcvec : (Complex.t, 'elt) Lacaml.Io.pp_labeled_vec
      val pp_labeled_rivec : (int32, 'elt) Lacaml.Io.pp_labeled_vec
      type ('el, 'elt) pp_lvec =
          ?print_head:bool ->
          ?print_foot:bool ->
          ?print_left:bool ->
          ?print_right:bool ->
          ?labels:string array ->
          ?name:string ->
          ?pad:char option ->
          ?ellipsis:string ->
          ?vertical_context:Lacaml.Io.Context.t option ->
          ?horizontal_context:Lacaml.Io.Context.t option ->
          unit ->
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array1.t -> unit
      val pp_lfvec : (float, 'elt) Lacaml.Io.pp_lvec
      val pp_lcvec : (Complex.t, 'elt) Lacaml.Io.pp_lvec
      val pp_livec : (int32, 'elt) Lacaml.Io.pp_lvec
      val pp_rlfvec : (float, 'elt) Lacaml.Io.pp_lvec
      val pp_rlcvec : (Complex.t, 'elt) Lacaml.Io.pp_lvec
      val pp_rlivec : (int32, 'elt) Lacaml.Io.pp_lvec
      type ('el, 'elt) pp_labeled_mat =
          ?pp_head:(Format.formatter -> int -> unit) option ->
          ?pp_foot:(Format.formatter -> int -> unit) option ->
          ?pp_left:(Format.formatter -> int -> unit) option ->
          ?pp_right:(Format.formatter -> int -> unit) option ->
          ?pad:char option ->
          ?ellipsis:string ->
          ?vertical_context:Lacaml.Io.Context.t option ->
          ?horizontal_context:Lacaml.Io.Context.t option ->
          unit ->
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array2.t -> unit
      val pp_labeled_fmat : (float, 'elt) Lacaml.Io.pp_labeled_mat
      val pp_labeled_cmat : (Complex.t, 'elt) Lacaml.Io.pp_labeled_mat
      val pp_labeled_imat : (int32, 'elt) Lacaml.Io.pp_labeled_mat
      type ('el, 'elt) pp_lmat =
          ?print_head:bool ->
          ?print_foot:bool ->
          ?print_left:bool ->
          ?print_right:bool ->
          ?row_labels:string array ->
          ?col_labels:string array ->
          ?pad:char option ->
          ?ellipsis:string ->
          ?vertical_context:Lacaml.Io.Context.t option ->
          ?horizontal_context:Lacaml.Io.Context.t option ->
          unit ->
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array2.t -> unit
      val pp_lfmat : (float, 'elt) Lacaml.Io.pp_lmat
      val pp_lcmat : (Complex.t, 'elt) Lacaml.Io.pp_lmat
      val pp_limat : (int32, 'elt) Lacaml.Io.pp_lmat
      type ('el, 'elt) pp_el_ovec =
          Format.formatter ->
          (Format.formatter -> 'el -> unit) ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array1.t -> unit
      val pp_ovec : ('el, 'elt) Lacaml.Io.pp_el_ovec
      val pp_rovec : ('el, 'elt) Lacaml.Io.pp_el_ovec
      type ('el, 'elt) pp_ovec =
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array1.t -> unit
      val pp_ofvec : (float, 'elt) Lacaml.Io.pp_ovec
      val pp_ocvec : (Complex.t, 'elt) Lacaml.Io.pp_ovec
      val pp_oivec : (int32, 'elt) Lacaml.Io.pp_ovec
      val pp_rofvec : (float, 'elt) Lacaml.Io.pp_ovec
      val pp_rocvec : (Complex.t, 'elt) Lacaml.Io.pp_ovec
      val pp_roivec : (int32, 'elt) Lacaml.Io.pp_ovec
      val pp_omat :
        Format.formatter ->
        (Format.formatter -> 'el -> unit) ->
        ('el, 'c, Bigarray.fortran_layout) Bigarray.Array2.t -> unit
      type ('el, 'elt) pp_omat =
          Format.formatter ->
          ('el, 'elt, Bigarray.fortran_layout) Bigarray.Array2.t -> unit
      val pp_ofmat : (float, 'elt) Lacaml.Io.pp_omat
      val pp_ocmat : (Complex.t, 'elt) Lacaml.Io.pp_omat
      val pp_oimat : (int32, 'elt) Lacaml.Io.pp_omat
      module Toplevel :
        sig
          val lsc : int -> unit
          val pp_fvec : (float, 'elt) Lacaml.Io.pp_vec
          val pp_cvec : (Complex.t, 'elt) Lacaml.Io.pp_vec
          val pp_ivec : (int32, 'elt) Lacaml.Io.pp_vec
          val pp_rfvec : (float, 'elt) Lacaml.Io.pp_vec
          val pp_rcvec : (Complex.t, 'elt) Lacaml.Io.pp_vec
          val pp_rivec : (int32, 'elt) Lacaml.Io.pp_vec
          val pp_fmat : (float, 'elt) Lacaml.Io.pp_mat
          val pp_cmat : (Complex.t, 'elt) Lacaml.Io.pp_mat
          val pp_imat : (int32, 'elt) Lacaml.Io.pp_mat
        end
    end
  module Real_io :
    sig
      val pp_num : Format.formatter -> float -> unit
      val pp_vec : (float, 'a) Lacaml.Io.pp_vec
      val pp_mat : (float, 'a) Lacaml.Io.pp_mat
    end
  module Complex_io :
    sig
      val pp_num : Format.formatter -> Complex.t -> unit
      val pp_vec : (Complex.t, 'a) Lacaml.Io.pp_vec
      val pp_mat : (Complex.t, 'a) Lacaml.Io.pp_mat
    end
  module Common :
    sig
      type trans2 = [ `N | `T ]
      type side = [ `L | `R ]
      type diag = [ `N | `U ]
      type norm2 = [ `I | `O ]
      type norm4 = [ `F | `I | `M | `O ]
      type svd_job = [ `A | `N | `O | `S ]
      exception InternalError of string
      type int_vec =
          (int, Bigarray.int_elt, Bigarray.fortran_layout) Bigarray.Array1.t
      val create_int_vec : int -> Lacaml.Common.int_vec
      type int32_vec =
          (int32, Bigarray.int32_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      val create_int32_vec : int -> Lacaml.Common.int32_vec
      val mat_from_vec :
        ('a, 'b, 'c) Bigarray.Array1.t -> ('a, 'b, 'c) Bigarray.Array2.t
    end
  module Utils :
    sig
      val empty_int32_vec : Common.int32_vec
      val get_norm_char : [< `F | `I | `M | `O ] -> char
      val get_uplo_char : bool -> char
      val get_trans_char : [< `C | `N | `T ] -> char
      val get_side_char : [< `L | `R ] -> char
      val get_diag_char : [< `N | `U ] -> char
      val get_s_d_job_char : [< `A | `N | `O | `S ] -> char
      val get_job_char : bool -> char
      val job_char_true : char
      val job_char_false : char
      val a_str : string
      val ab_str : string
      val alphas_str : string
      val ap_str : string
      val b_str : string
      val c_str : string
      val d_str : string
      val dl_str : string
      val du_str : string
      val e_str : string
      val ipiv_str : string
      val iseed_str : string
      val k_str : string
      val ka_str : string
      val kb_str : string
      val work_str : string
      val lwork_str : string
      val liwork_str : string
      val kd_str : string
      val kl_str : string
      val ku_str : string
      val m_str : string
      val n_str : string
      val nrhs_str : string
      val s_str : string
      val tau_str : string
      val u_str : string
      val um_str : string
      val un_str : string
      val vm_str : string
      val vn_str : string
      val vt_str : string
      val w_str : string
      val wi_str : string
      val wr_str : string
      val x_str : string
      val y_str : string
      val z_str : string
      val get_work :
        string ->
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        int -> int -> string -> ('a, 'b, 'c) Bigarray.Array1.t * int
      val calc_unpacked_dim : string -> int -> int
      val get_unpacked_dim : string -> ?n:int -> int -> int
      external ilaenv :
        int -> string -> string -> int -> int -> int -> int -> int
        = "lacaml_ilaenv_stub_bc" "lacaml_ilaenv_stub"
      val check_var_ltz : string -> string -> int -> unit
      val check_vec :
        string -> string -> ('a, 'b, 'c) Bigarray.Array1.t -> int -> unit
      val get_vec :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        int ->
        int ->
        int ->
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        ('a, 'b, 'c) Bigarray.Array1.t
      val check_dim1_mat :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t -> int -> string -> int -> unit
      val check_dim2_mat :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t -> int -> string -> int -> unit
      val check_dim_mat :
        string ->
        string ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> unit
      val get_mat :
        string ->
        string ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t
      val get_dim_vec :
        string ->
        string ->
        int ->
        int -> ('a, 'b, 'c) Bigarray.Array1.t -> string -> int option -> int
      val get_dim1_mat :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t -> int -> string -> int option -> int
      val get_dim2_mat :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t -> int -> string -> int option -> int
      val get_k_mat_sb :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t -> int -> string -> int option -> int
      val get_dim_mat_packed :
        string ->
        string ->
        int -> ('a, 'b, 'c) Bigarray.Array1.t -> string -> int option -> int
      val get_inc : string -> string -> int option -> int
      val get_ofs : string -> string -> int option -> int
      val get_vec_geom :
        string -> string -> int option -> int option -> int * int
      val get_n_of_square :
        string ->
        string ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int option -> int
      val get_n_of_a :
        string ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int option -> int
      val get_nrhs_of_b :
        string ->
        int ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int option -> int
      val orgqr_err :
        loc:string ->
        m:int ->
        n:int ->
        k:int ->
        work:('a, 'b, 'c) Bigarray.Array1.t ->
        a:('d, 'e, 'f) Bigarray.Array2.t -> err:int -> 'g
      val orgqr_get_params :
        string ->
        ?m:int ->
        ?n:int ->
        ?k:int ->
        tau:('a, 'b, 'c) Bigarray.Array1.t ->
        ar:int -> ac:int -> ('d, 'e, 'f) Bigarray.Array2.t -> int * int * int
      val ormqr_err :
        loc:string ->
        side:[< `L | `R ] ->
        m:int ->
        n:int ->
        k:int ->
        lwork:int ->
        a:('a, 'b, 'c) Bigarray.Array2.t ->
        c:('d, 'e, 'f) Bigarray.Array2.t -> err:int -> 'g
      val ormqr_get_params :
        string ->
        side:[< `L | `R ] ->
        ?m:int ->
        ?n:int ->
        ?k:int ->
        tau:('a, 'b, 'c) Bigarray.Array1.t ->
        ar:int ->
        ac:int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        cr:int -> cc:int -> ('g, 'h, 'i) Bigarray.Array2.t -> int * int * int
      val gelsX_err :
        string ->
        (m:int -> n:int -> nrhs:int -> int) ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int ->
        int ->
        int -> int -> int -> ('d, 'e, 'f) Bigarray.Array2.t -> int -> 'g
      val gelsX_get_s :
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        ('a, 'b, 'c) Bigarray.Array1.t
      val gelsX_get_params :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int option ->
        int option ->
        int option ->
        int -> int -> ('d, 'e, 'f) Bigarray.Array2.t -> int * int * int
      val xxev_get_params :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int option -> bool -> bool -> int * char * char
      val xxev_get_wx :
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        string ->
        string ->
        int ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        int -> int * ('a, 'b, 'c) Bigarray.Array1.t
      val geev_get_job_side :
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        string ->
        int ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option option ->
        int * int * ('a, 'b, 'c) Bigarray.Array2.t * char * bool
      val geev_gen_get_params :
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int option ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option option ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option option ->
        int * int * int * ('a, 'b, 'c) Bigarray.Array2.t * char * int * 
        int * ('a, 'b, 'c) Bigarray.Array2.t * char * bool
      val gXmv_get_params :
        string ->
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        int ->
        int ->
        int option ->
        int option ->
        ('d, 'e, 'f) Bigarray.Array1.t ->
        int option ->
        int option ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        [< `C | `N | `T > `N ] ->
        int * int * int * int * ('a, 'b, 'c) Bigarray.Array1.t * char
      val symv_get_params :
        string ->
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int option ->
        int option ->
        int option ->
        ('g, 'h, 'i) Bigarray.Array1.t ->
        int option ->
        int option ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        bool ->
        int * int * int * int * int * ('a, 'b, 'c) Bigarray.Array1.t * char
      val trXv_get_params :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int option ->
        int option ->
        int option ->
        ('d, 'e, 'f) Bigarray.Array1.t ->
        bool ->
        [< `C | `N | `T ] ->
        [< `N | `U ] -> int * int * int * char * char * char
      val tpXv_get_params :
        string ->
        int option ->
        ('a, 'b, 'c) Bigarray.Array1.t ->
        ?n:int ->
        int option ->
        int option ->
        ('d, 'e, 'f) Bigarray.Array1.t ->
        bool ->
        [< `C | `N | `T ] ->
        [< `N | `U ] -> int * int * int * int * char * char * char
      val get_c :
        string ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t
      val get_rows_mat_tr :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int -> int -> [> `N ] -> string -> int option -> int
      val get_cols_mat_tr :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int -> int -> [> `N ] -> string -> int option -> int
      val get_inner_dim :
        string ->
        string ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int ->
        int ->
        [> `N ] ->
        string ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int -> int -> [> `N ] -> string -> int option -> int
      val gemm_get_params :
        string ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        [< `C | `N | `T > `N ] ->
        int ->
        int ->
        ('g, 'h, 'i) Bigarray.Array2.t ->
        int ->
        [< `C | `N | `T > `N ] ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option ->
        int option ->
        int option ->
        int option ->
        int * int * int * char * char * ('a, 'b, 'c) Bigarray.Array2.t
      val check_mat_square :
        string ->
        string -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> int -> unit
      val symm_get_params :
        string ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int ->
        int ->
        ('g, 'h, 'i) Bigarray.Array2.t ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option ->
        int option ->
        int option ->
        [< `L | `R > `L ] ->
        bool -> int * int * char * char * ('a, 'b, 'c) Bigarray.Array2.t
      val trXm_get_params :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int option ->
        int option ->
        [< `L | `R > `L ] ->
        bool ->
        [< `C | `N | `T ] ->
        [< `N | `U ] -> int * int * char * char * char * char
      val syrk_get_params :
        string ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option ->
        int option ->
        int option ->
        bool ->
        [< `C | `N | `T > `N ] ->
        int * int * char * char * ('a, 'b, 'c) Bigarray.Array2.t
      val syr2k_get_params :
        string ->
        (int -> int -> ('a, 'b, 'c) Bigarray.Array2.t) ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        int ->
        int ->
        ('g, 'h, 'i) Bigarray.Array2.t ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t option ->
        int option ->
        int option ->
        bool ->
        [< `C | `N | `T > `N ] ->
        int * int * char * char * ('a, 'b, 'c) Bigarray.Array2.t
      val xlange_get_params :
        string ->
        int option ->
        int option ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int * int
      val xxtrs_get_params :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int option ->
        int ->
        int -> ('d, 'e, 'f) Bigarray.Array2.t -> int option -> int * int
      val xxtrs_err :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        ('d, 'e, 'f) Bigarray.Array2.t -> int -> 'g
      val xxtri_singular_err : string -> int -> 'a
      val xxtri_err :
        string -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val xxcon_err :
        string -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val geXrf_get_params :
        string ->
        int option ->
        int option ->
        int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int * int
      val getrf_err :
        string -> int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val getrf_lu_err : string -> int -> 'a
      val getrf_get_ipiv :
        string -> Common.int32_vec option -> int -> int -> Common.int32_vec
      val sytrf_get_ipiv :
        string -> Common.int32_vec option -> int -> Common.int32_vec
      val sytrf_err :
        string -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val sytrf_fact_err : string -> int -> 'a
      val potrf_chol_err : string -> int -> 'a
      val potrf_err :
        string -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val potrs_err :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        ('d, 'e, 'f) Bigarray.Array2.t -> int -> 'g
      val trtrs_err :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        ('d, 'e, 'f) Bigarray.Array2.t -> int -> 'g
      val tbtrs_err :
        string ->
        int ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        ('d, 'e, 'f) Bigarray.Array2.t -> int -> 'g
      val getri_err :
        string ->
        (int -> int) ->
        int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'd
      val trtri_err :
        string -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val gecon_err :
        string -> char -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val gesvd_err :
        string ->
        char ->
        char ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        ('g, 'h, 'i) Bigarray.Array2.t -> int -> int -> 'j
      val gesvd_get_params :
        string ->
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        (int -> int -> ('d, 'e, 'f) Bigarray.Array2.t) ->
        [< `A | `N | `O | `S ] ->
        [< `A | `N | `O | `S ] ->
        int option ->
        int option ->
        int ->
        int ->
        ('g, 'h, 'i) Bigarray.Array2.t ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t option ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t option ->
        char * char * int * int * ('a, 'b, 'c) Bigarray.Array1.t *
        ('d, 'e, 'f) Bigarray.Array2.t * ('d, 'e, 'f) Bigarray.Array2.t
      val gesdd_err :
        string ->
        char ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        ('d, 'e, 'f) Bigarray.Array2.t ->
        ('g, 'h, 'i) Bigarray.Array2.t -> int -> int -> 'j
      val gesdd_get_params :
        string ->
        (int -> ('a, 'b, 'c) Bigarray.Array1.t) ->
        (int -> int -> ('d, 'e, 'f) Bigarray.Array2.t) ->
        [< `A | `N | `O | `S ] ->
        int option ->
        int option ->
        int ->
        int ->
        ('g, 'h, 'i) Bigarray.Array2.t ->
        ('a, 'b, 'c) Bigarray.Array1.t option ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t option ->
        int ->
        int ->
        ('d, 'e, 'f) Bigarray.Array2.t option ->
        char * int * int * ('a, 'b, 'c) Bigarray.Array1.t *
        ('d, 'e, 'f) Bigarray.Array2.t * ('d, 'e, 'f) Bigarray.Array2.t
      val xxsv_err :
        string -> int -> int -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val xxsv_lu_err : string -> int -> 'a
      val xxsv_pos_err : string -> int -> 'a
      val xxsv_ind_err : string -> int -> 'a
      val xxsv_a_err : string -> ('a, 'b, 'c) Bigarray.Array2.t -> int -> 'd
      val xxsv_work_err : string -> int -> 'a
      val xxsv_get_ipiv :
        string -> Common.int32_vec option -> int -> Common.int32_vec
      val xxsv_get_params :
        string ->
        int ->
        int ->
        ('a, 'b, 'c) Bigarray.Array2.t ->
        int option ->
        int ->
        int -> ('d, 'e, 'f) Bigarray.Array2.t -> int option -> int * int
    end
  module D :
    sig
      type prec = Bigarray.float64_elt
      type num_type = float
      type vec =
          (float, Bigarray.float64_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      type rvec = Lacaml.D.vec
      type mat =
          (float, Bigarray.float64_elt, Bigarray.fortran_layout)
          Bigarray.Array2.t
      type trans3 = [ `N | `T ]
      val prec : (float, Bigarray.float64_elt) Bigarray.kind
      module Vec :
        sig
          val random :
            ?rnd_state:Random.State.t ->
            ?from:float -> ?range:float -> int -> Lacaml.D.vec
          val sqr :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val sqrt :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val exp :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val log :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val sin :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val cos :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val create : int -> Lacaml.D.vec
          val make : int -> Lacaml.D.num_type -> Lacaml.D.vec
          val make0 : int -> Lacaml.D.vec
          val init : int -> (int -> Lacaml.D.num_type) -> Lacaml.D.vec
          val of_array : Lacaml.D.num_type array -> Lacaml.D.vec
          val to_array : Lacaml.D.vec -> Lacaml.D.num_type array
          val of_list : Lacaml.D.num_type list -> Lacaml.D.vec
          val to_list : Lacaml.D.vec -> Lacaml.D.num_type list
          val append : Lacaml.D.vec -> Lacaml.D.vec -> Lacaml.D.vec
          val concat : Lacaml.D.vec list -> Lacaml.D.vec
          val empty : Lacaml.D.vec
          val linspace :
            ?y:Lacaml.D.vec ->
            Lacaml.D.num_type -> Lacaml.D.num_type -> int -> Lacaml.D.vec
          val logspace :
            ?y:Lacaml.D.vec ->
            Lacaml.D.num_type ->
            Lacaml.D.num_type -> ?base:float -> int -> Lacaml.D.vec
          val dim : Lacaml.D.vec -> int
          val map :
            (Lacaml.D.num_type -> Lacaml.D.num_type) ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val iter :
            (Lacaml.D.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
          val iteri :
            (int -> Lacaml.D.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
          val fold :
            ('-> Lacaml.D.num_type -> 'a) ->
            '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> 'a
          val fill :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type -> unit
          val rev : Lacaml.D.vec -> Lacaml.D.vec
          val max :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type
          val min :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type
          val sum :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type
          val prod :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type
          val add_const :
            Lacaml.D.num_type ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val sqr_nrm2 :
            ?stable:bool ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> float
          val ssqr :
            ?n:int ->
            ?c:Lacaml.D.num_type ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type
          val sort :
            ?cmp:(Lacaml.D.num_type -> Lacaml.D.num_type -> int) ->
            ?decr:bool ->
            ?n:int ->
            ?ofsp:int ->
            ?incp:int ->
            ?p:Lacaml.Common.int_vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
          val neg :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val reci :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.D.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
          val add :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.D.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.vec
          val sub :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.D.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.vec
          val mul :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.D.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.vec
          val div :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.D.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.vec
          val zpxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.D.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.vec
          val zmxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.D.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.vec
          val ssqr_diff :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.D.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> Lacaml.D.num_type
        end
      module Mat :
        sig
          val hilbert : int -> Lacaml.D.mat
          val hankel : int -> Lacaml.D.mat
          val pascal : int -> Lacaml.D.mat
          val rosser : unit -> Lacaml.D.mat
          val toeplitz : Lacaml.D.vec -> Lacaml.D.mat
          val vandermonde : Lacaml.D.vec -> Lacaml.D.mat
          val wilkinson : int -> Lacaml.D.mat
          val random :
            ?rnd_state:Random.State.t ->
            ?from:float -> ?range:float -> int -> int -> Lacaml.D.mat
          val create : int -> int -> Lacaml.D.mat
          val make : int -> int -> Lacaml.D.num_type -> Lacaml.D.mat
          val make0 : int -> int -> Lacaml.D.mat
          val of_array : Lacaml.D.num_type array array -> Lacaml.D.mat
          val to_array : Lacaml.D.mat -> Lacaml.D.num_type array array
          val of_col_vecs : Lacaml.D.vec array -> Lacaml.D.mat
          val to_col_vecs : Lacaml.D.mat -> Lacaml.D.vec array
          val as_vec : Lacaml.D.mat -> Lacaml.D.vec
          val init_rows :
            int -> int -> (int -> int -> Lacaml.D.num_type) -> Lacaml.D.mat
          val init_cols :
            int -> int -> (int -> int -> Lacaml.D.num_type) -> Lacaml.D.mat
          val create_mvec : int -> Lacaml.D.mat
          val make_mvec : int -> Lacaml.D.num_type -> Lacaml.D.mat
          val mvec_of_array : Lacaml.D.num_type array -> Lacaml.D.mat
          val mvec_to_array : Lacaml.D.mat -> Lacaml.D.num_type array
          val from_col_vec : Lacaml.D.vec -> Lacaml.D.mat
          val from_row_vec : Lacaml.D.vec -> Lacaml.D.mat
          val empty : Lacaml.D.mat
          val identity : int -> Lacaml.D.mat
          val of_diag : Lacaml.D.vec -> Lacaml.D.mat
          val dim1 : Lacaml.D.mat -> int
          val dim2 : Lacaml.D.mat -> int
          val col : Lacaml.D.mat -> int -> Lacaml.D.vec
          val copy_row :
            ?vec:Lacaml.D.vec -> Lacaml.D.mat -> int -> Lacaml.D.vec
          val transpose_copy :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
          val transpose :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
          val detri :
            ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
          val packed :
            ?up:bool ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec
          val unpacked : ?up:bool -> ?n:int -> Lacaml.D.vec -> Lacaml.D.mat
          val add_const :
            Lacaml.D.num_type ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.D.mat ->
            ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
          val sum :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.num_type
          val fill :
            ?m:int ->
            ?n:int ->
            ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.num_type -> unit
          val copy_diag : Lacaml.D.mat -> Lacaml.D.vec
          val trace : Lacaml.D.mat -> Lacaml.D.num_type
          val scal :
            ?m:int ->
            ?n:int ->
            Lacaml.D.num_type -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
          val scal_cols :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int -> Lacaml.D.mat -> ?ofs:int -> Lacaml.D.vec -> unit
          val scal_rows :
            ?m:int ->
            ?n:int ->
            ?ofs:int ->
            Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
          val axpy :
            ?m:int ->
            ?n:int ->
            ?alpha:Lacaml.D.num_type ->
            ?xr:int ->
            ?xc:int ->
            x:Lacaml.D.mat -> ?yr:int -> ?yc:int -> Lacaml.D.mat -> unit
          val gemm_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.D.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.D.vec ->
            ?transa:Lacaml.D.trans3 ->
            ?alpha:Lacaml.D.num_type ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.D.mat ->
            ?transb:Lacaml.D.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.vec
          val syrk_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.D.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.D.vec ->
            ?trans:Lacaml.Common.trans2 ->
            ?alpha:Lacaml.D.num_type ->
            ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec
          val gemm_trace :
            ?n:int ->
            ?k:int ->
            ?transa:Lacaml.D.trans3 ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.D.mat ->
            ?transb:Lacaml.D.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.num_type
          val syrk_trace :
            ?n:int ->
            ?k:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.num_type
          val symm2_trace :
            ?n:int ->
            ?upa:bool ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.D.mat ->
            ?upb:bool ->
            ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.num_type
          val map :
            (Lacaml.D.num_type -> Lacaml.D.num_type) ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.D.mat ->
            ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
          val fold_cols :
            ('-> Lacaml.D.vec -> 'a) ->
            ?n:int -> ?ac:int -> '-> Lacaml.D.mat -> 'a
        end
      val pp_num : Format.formatter -> float -> unit
      val pp_vec : (float, 'a) Lacaml.Io.pp_vec
      val pp_mat : (float, 'a) Lacaml.Io.pp_mat
      val dot :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.D.vec -> ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> float
      val asum : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> float
      val sbmv :
        ?n:int ->
        ?k:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?up:bool ->
        ?alpha:float ->
        ?beta:float -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
      val ger :
        ?m:int ->
        ?n:int ->
        ?alpha:float ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.D.vec ->
        ?ofsy:int ->
        ?incy:int ->
        Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
      val syr :
        ?n:int ->
        ?alpha:float ->
        ?up:bool ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
      val lansy_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lansy :
        ?n:int ->
        ?up:bool ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> float
      val lamch :
        [ `B | `E | `L | `M | `N | `O | `P | `R | `S | `U ] -> float
      val orgqr_min_lwork : n:int -> int
      val orgqr_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        tau:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val orgqr :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?work:Lacaml.D.vec ->
        tau:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
      val ormqr_opt_lwork :
        ?side:Lacaml.Common.side ->
        ?trans:Lacaml.Common.trans2 ->
        ?m:int ->
        ?n:int ->
        ?k:int ->
        tau:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.D.mat -> ?cr:int -> ?cc:int -> Lacaml.D.mat -> int
      val ormqr :
        ?side:Lacaml.Common.side ->
        ?trans:Lacaml.Common.trans2 ->
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?work:Lacaml.D.vec ->
        tau:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.D.mat -> ?cr:int -> ?cc:int -> Lacaml.D.mat -> unit
      val gecon_min_lwork : int -> int
      val gecon_min_liwork : int -> int
      val gecon :
        ?n:int ->
        ?norm:Lacaml.Common.norm2 ->
        ?anorm:float ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> float
      val sycon_min_lwork : int -> int
      val sycon_min_liwork : int -> int
      val sycon :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?anorm:float ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> float
      val pocon_min_lwork : int -> int
      val pocon_min_liwork : int -> int
      val pocon :
        ?n:int ->
        ?up:bool ->
        ?anorm:float ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> float
      val gelsy_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gelsy_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gelsy :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?rcond:float ->
        ?jpvt:Lacaml.Common.int32_vec ->
        ?work:Lacaml.D.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gelsd_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gelsd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gelsd_min_iwork : int -> int -> int
      val gelsd :
        ?m:int ->
        ?n:int ->
        ?rcond:float ->
        ?ofss:int ->
        ?s:Lacaml.D.vec ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gelss_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gelss_opt_lwork :
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?m:int ->
        ?n:int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gelss :
        ?m:int ->
        ?n:int ->
        ?rcond:float ->
        ?ofss:int ->
        ?s:Lacaml.D.vec ->
        ?work:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gesvd_min_lwork : m:int -> n:int -> int
      val gesvd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.D.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.D.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.D.mat -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val gesvd :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.D.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.D.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.D.mat ->
        ?work:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec * Lacaml.D.mat * Lacaml.D.mat
      val gesdd_liwork : m:int -> n:int -> int
      val gesdd_min_lwork :
        ?jobz:Lacaml.Common.svd_job -> m:int -> n:int -> unit -> int
      val gesdd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?jobz:Lacaml.Common.svd_job ->
        ?s:Lacaml.D.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.D.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.D.mat ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val gesdd :
        ?m:int ->
        ?n:int ->
        ?jobz:Lacaml.Common.svd_job ->
        ?s:Lacaml.D.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.D.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.D.mat ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec * Lacaml.D.mat * Lacaml.D.mat
      val geev_min_lwork : ?vectors:bool -> int -> int
      val geev_opt_lwork :
        ?n:int ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.D.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.D.mat option ->
        ?ofswr:int ->
        ?wr:Lacaml.D.vec ->
        ?ofswi:int ->
        ?wi:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val geev :
        ?n:int ->
        ?work:Lacaml.D.vec ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.D.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.D.mat option ->
        ?ofswr:int ->
        ?wr:Lacaml.D.vec ->
        ?ofswi:int ->
        ?wi:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        Lacaml.D.mat * Lacaml.D.vec * Lacaml.D.vec * Lacaml.D.mat
      val syev_min_lwork : int -> int
      val syev_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val syev :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?work:Lacaml.D.vec ->
        ?ofsw:int ->
        ?w:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec
      val syevd_min_lwork : vectors:bool -> int -> int
      val syevd_min_liwork : vectors:bool -> int -> int
      val syevd_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val syevd_opt_liwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val syevd_opt_l_li_work :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int * int
      val syevd :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ofsw:int ->
        ?w:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec
      val sbev_min_lwork : int -> int
      val sbev :
        ?n:int ->
        ?kd:int ->
        ?zr:int ->
        ?zc:int ->
        ?z:Lacaml.D.mat ->
        ?up:bool ->
        ?work:Lacaml.D.vec ->
        ?ofsw:int ->
        ?w:Lacaml.D.vec ->
        ?abr:int -> ?abc:int -> Lacaml.D.mat -> Lacaml.D.vec
      val syevr_min_lwork : int -> int
      val syevr_min_liwork : int -> int
      val syevr_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val syevr_opt_liwork :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val syevr_opt_l_li_work :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int * int
      val syevr :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float ->
        ?work:Lacaml.D.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ofsw:int ->
        ?w:Lacaml.D.vec ->
        ?zr:int ->
        ?zc:int ->
        ?z:Lacaml.D.mat ->
        ?isuppz:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        int * Lacaml.D.vec * Lacaml.D.mat * Lacaml.Common.int32_vec
      val sygv_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?itype:[ `AB | `A_B | `BA ] ->
        ?ar:int ->
        ?ac:int -> Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val sygv :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?work:Lacaml.D.vec ->
        ?ofsw:int ->
        ?w:Lacaml.D.vec ->
        ?itype:[ `AB | `A_B | `BA ] ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.vec
      val sbgv :
        ?n:int ->
        ?ka:int ->
        ?kb:int ->
        ?zr:int ->
        ?zc:int ->
        ?z:Lacaml.D.mat ->
        ?up:bool ->
        ?work:Lacaml.D.vec ->
        ?ofsw:int ->
        ?w:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.vec
      val swap :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.D.vec -> ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> unit
      val scal :
        ?n:int ->
        Lacaml.D.num_type -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
      val copy :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.D.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
      val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> float
      val axpy :
        ?n:int ->
        ?alpha:Lacaml.D.num_type ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.D.vec -> ?ofsy:int -> ?incy:int -> Lacaml.D.vec -> unit
      val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> int
      val amax :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.num_type
      val gemv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.D.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.D.vec ->
        ?trans:Lacaml.D.trans3 ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
      val gbmv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.D.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.D.vec ->
        ?trans:Lacaml.D.trans3 ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        int -> int -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
      val symv :
        ?n:int ->
        ?beta:Lacaml.D.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.D.vec ->
        ?up:bool ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> Lacaml.D.vec
      val trmv :
        ?n:int ->
        ?trans:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
      val trsv :
        ?n:int ->
        ?trans:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
      val tpmv :
        ?n:int ->
        ?trans:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.D.vec -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
      val tpsv :
        ?n:int ->
        ?trans:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.D.vec -> ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> unit
      val gemm :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml.D.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.D.mat ->
        ?transa:Lacaml.D.trans3 ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?transb:Lacaml.D.trans3 ->
        ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.mat
      val symm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?beta:Lacaml.D.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.D.mat ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.mat
      val trmm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val trsm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val syrk :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.D.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.D.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
      val syr2k :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.D.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.D.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.D.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat -> ?br:int -> ?bc:int -> Lacaml.D.mat -> Lacaml.D.mat
      val lacpy :
        ?uplo:[ `L | `U ] ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml.D.mat -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.mat
      val lassq :
        ?n:int ->
        ?scale:float ->
        ?sumsq:float ->
        ?ofsx:int -> ?incx:int -> Lacaml.D.vec -> float * float
      val larnv :
        ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
        ?iseed:Lacaml.Common.int32_vec ->
        ?n:int -> ?ofsx:int -> ?x:Lacaml.D.vec -> unit -> Lacaml.D.vec
      val lange_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lange :
        ?m:int ->
        ?n:int ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.D.rvec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> float
      val lauum :
        ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
      val getrf :
        ?m:int ->
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.Common.int32_vec
      val getrs :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?trans:Lacaml.D.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val getri_min_lwork : int -> int
      val getri_opt_lwork :
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val getri :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
      val sytrf_min_lwork : unit -> int
      val sytrf_opt_lwork :
        ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val sytrf :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.D.vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.Common.int32_vec
      val sytrs :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val sytri_min_lwork : int -> int
      val sytri :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.D.vec -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
      val potrf :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int -> ?jitter:Lacaml.D.num_type -> Lacaml.D.mat -> unit
      val potrs :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int ->
        ?br:int ->
        ?bc:int ->
        ?factorize:bool -> ?jitter:Lacaml.D.num_type -> Lacaml.D.mat -> unit
      val potri :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        ?factorize:bool -> ?jitter:Lacaml.D.num_type -> Lacaml.D.mat -> unit
      val trtrs :
        ?n:int ->
        ?up:bool ->
        ?trans:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val tbtrs :
        ?n:int ->
        ?kd:int ->
        ?up:bool ->
        ?trans:Lacaml.D.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val trtri :
        ?n:int ->
        ?up:bool ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> unit
      val geqrf_opt_lwork :
        ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.D.mat -> int
      val geqrf_min_lwork : n:int -> int
      val geqrf :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.D.vec ->
        ?tau:Lacaml.D.vec ->
        ?ar:int -> ?ac:int -> Lacaml.D.mat -> Lacaml.D.vec
      val gesv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val gbsv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.D.mat ->
        int -> int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val gtsv :
        ?n:int ->
        ?ofsdl:int ->
        Lacaml.D.vec ->
        ?ofsd:int ->
        Lacaml.D.vec ->
        ?ofsdu:int ->
        Lacaml.D.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val posv :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val ppsv :
        ?n:int ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.D.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val pbsv :
        ?n:int ->
        ?up:bool ->
        ?kd:int ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val ptsv :
        ?n:int ->
        ?ofsd:int ->
        Lacaml.D.vec ->
        ?ofse:int ->
        Lacaml.D.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val sysv_opt_lwork :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val sysv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.D.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val spsv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ofsap:int ->
        Lacaml.D.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
      val gels_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gels_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> int
      val gels :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.D.vec ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.D.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.D.mat -> unit
    end
  module S :
    sig
      type prec = Bigarray.float32_elt
      type num_type = float
      type vec =
          (float, Bigarray.float32_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      type rvec = Lacaml.S.vec
      type mat =
          (float, Bigarray.float32_elt, Bigarray.fortran_layout)
          Bigarray.Array2.t
      type trans3 = [ `N | `T ]
      val prec : (float, Bigarray.float32_elt) Bigarray.kind
      module Vec :
        sig
          val random :
            ?rnd_state:Random.State.t ->
            ?from:float -> ?range:float -> int -> Lacaml.S.vec
          val sqr :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val sqrt :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val exp :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val log :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val sin :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val cos :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val create : int -> Lacaml.S.vec
          val make : int -> Lacaml.S.num_type -> Lacaml.S.vec
          val make0 : int -> Lacaml.S.vec
          val init : int -> (int -> Lacaml.S.num_type) -> Lacaml.S.vec
          val of_array : Lacaml.S.num_type array -> Lacaml.S.vec
          val to_array : Lacaml.S.vec -> Lacaml.S.num_type array
          val of_list : Lacaml.S.num_type list -> Lacaml.S.vec
          val to_list : Lacaml.S.vec -> Lacaml.S.num_type list
          val append : Lacaml.S.vec -> Lacaml.S.vec -> Lacaml.S.vec
          val concat : Lacaml.S.vec list -> Lacaml.S.vec
          val empty : Lacaml.S.vec
          val linspace :
            ?y:Lacaml.S.vec ->
            Lacaml.S.num_type -> Lacaml.S.num_type -> int -> Lacaml.S.vec
          val logspace :
            ?y:Lacaml.S.vec ->
            Lacaml.S.num_type ->
            Lacaml.S.num_type -> ?base:float -> int -> Lacaml.S.vec
          val dim : Lacaml.S.vec -> int
          val map :
            (Lacaml.S.num_type -> Lacaml.S.num_type) ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val iter :
            (Lacaml.S.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
          val iteri :
            (int -> Lacaml.S.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
          val fold :
            ('-> Lacaml.S.num_type -> 'a) ->
            '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> 'a
          val fill :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type -> unit
          val rev : Lacaml.S.vec -> Lacaml.S.vec
          val max :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type
          val min :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type
          val sum :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type
          val prod :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type
          val add_const :
            Lacaml.S.num_type ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val sqr_nrm2 :
            ?stable:bool ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> float
          val ssqr :
            ?n:int ->
            ?c:Lacaml.S.num_type ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type
          val sort :
            ?cmp:(Lacaml.S.num_type -> Lacaml.S.num_type -> int) ->
            ?decr:bool ->
            ?n:int ->
            ?ofsp:int ->
            ?incp:int ->
            ?p:Lacaml.Common.int_vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
          val neg :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val reci :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.S.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
          val add :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.S.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.vec
          val sub :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.S.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.vec
          val mul :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.S.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.vec
          val div :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.S.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.vec
          val zpxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.S.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.vec
          val zmxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.S.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.vec
          val ssqr_diff :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.S.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> Lacaml.S.num_type
        end
      module Mat :
        sig
          val hilbert : int -> Lacaml.S.mat
          val hankel : int -> Lacaml.S.mat
          val pascal : int -> Lacaml.S.mat
          val rosser : unit -> Lacaml.S.mat
          val toeplitz : Lacaml.S.vec -> Lacaml.S.mat
          val vandermonde : Lacaml.S.vec -> Lacaml.S.mat
          val wilkinson : int -> Lacaml.S.mat
          val random :
            ?rnd_state:Random.State.t ->
            ?from:float -> ?range:float -> int -> int -> Lacaml.S.mat
          val create : int -> int -> Lacaml.S.mat
          val make : int -> int -> Lacaml.S.num_type -> Lacaml.S.mat
          val make0 : int -> int -> Lacaml.S.mat
          val of_array : Lacaml.S.num_type array array -> Lacaml.S.mat
          val to_array : Lacaml.S.mat -> Lacaml.S.num_type array array
          val of_col_vecs : Lacaml.S.vec array -> Lacaml.S.mat
          val to_col_vecs : Lacaml.S.mat -> Lacaml.S.vec array
          val as_vec : Lacaml.S.mat -> Lacaml.S.vec
          val init_rows :
            int -> int -> (int -> int -> Lacaml.S.num_type) -> Lacaml.S.mat
          val init_cols :
            int -> int -> (int -> int -> Lacaml.S.num_type) -> Lacaml.S.mat
          val create_mvec : int -> Lacaml.S.mat
          val make_mvec : int -> Lacaml.S.num_type -> Lacaml.S.mat
          val mvec_of_array : Lacaml.S.num_type array -> Lacaml.S.mat
          val mvec_to_array : Lacaml.S.mat -> Lacaml.S.num_type array
          val from_col_vec : Lacaml.S.vec -> Lacaml.S.mat
          val from_row_vec : Lacaml.S.vec -> Lacaml.S.mat
          val empty : Lacaml.S.mat
          val identity : int -> Lacaml.S.mat
          val of_diag : Lacaml.S.vec -> Lacaml.S.mat
          val dim1 : Lacaml.S.mat -> int
          val dim2 : Lacaml.S.mat -> int
          val col : Lacaml.S.mat -> int -> Lacaml.S.vec
          val copy_row :
            ?vec:Lacaml.S.vec -> Lacaml.S.mat -> int -> Lacaml.S.vec
          val transpose_copy :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
          val transpose :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
          val detri :
            ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
          val packed :
            ?up:bool ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec
          val unpacked : ?up:bool -> ?n:int -> Lacaml.S.vec -> Lacaml.S.mat
          val add_const :
            Lacaml.S.num_type ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.S.mat ->
            ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
          val sum :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.num_type
          val fill :
            ?m:int ->
            ?n:int ->
            ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.num_type -> unit
          val copy_diag : Lacaml.S.mat -> Lacaml.S.vec
          val trace : Lacaml.S.mat -> Lacaml.S.num_type
          val scal :
            ?m:int ->
            ?n:int ->
            Lacaml.S.num_type -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
          val scal_cols :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int -> Lacaml.S.mat -> ?ofs:int -> Lacaml.S.vec -> unit
          val scal_rows :
            ?m:int ->
            ?n:int ->
            ?ofs:int ->
            Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
          val axpy :
            ?m:int ->
            ?n:int ->
            ?alpha:Lacaml.S.num_type ->
            ?xr:int ->
            ?xc:int ->
            x:Lacaml.S.mat -> ?yr:int -> ?yc:int -> Lacaml.S.mat -> unit
          val gemm_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.S.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.S.vec ->
            ?transa:Lacaml.S.trans3 ->
            ?alpha:Lacaml.S.num_type ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.S.mat ->
            ?transb:Lacaml.S.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.vec
          val syrk_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.S.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.S.vec ->
            ?trans:Lacaml.Common.trans2 ->
            ?alpha:Lacaml.S.num_type ->
            ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec
          val gemm_trace :
            ?n:int ->
            ?k:int ->
            ?transa:Lacaml.S.trans3 ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.S.mat ->
            ?transb:Lacaml.S.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.num_type
          val syrk_trace :
            ?n:int ->
            ?k:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.num_type
          val symm2_trace :
            ?n:int ->
            ?upa:bool ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.S.mat ->
            ?upb:bool ->
            ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.num_type
          val map :
            (Lacaml.S.num_type -> Lacaml.S.num_type) ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.S.mat ->
            ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
          val fold_cols :
            ('-> Lacaml.S.vec -> 'a) ->
            ?n:int -> ?ac:int -> '-> Lacaml.S.mat -> 'a
        end
      val pp_num : Format.formatter -> float -> unit
      val pp_vec : (float, 'a) Lacaml.Io.pp_vec
      val pp_mat : (float, 'a) Lacaml.Io.pp_mat
      val dot :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.S.vec -> ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> float
      val asum : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> float
      val sbmv :
        ?n:int ->
        ?k:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?up:bool ->
        ?alpha:float ->
        ?beta:float -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
      val ger :
        ?m:int ->
        ?n:int ->
        ?alpha:float ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.S.vec ->
        ?ofsy:int ->
        ?incy:int ->
        Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
      val syr :
        ?n:int ->
        ?alpha:float ->
        ?up:bool ->
        ?ofsx:int ->
        ?incx:int ->
        Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
      val lansy_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lansy :
        ?n:int ->
        ?up:bool ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> float
      val lamch :
        [ `B | `E | `L | `M | `N | `O | `P | `R | `S | `U ] -> float
      val orgqr_min_lwork : n:int -> int
      val orgqr_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        tau:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val orgqr :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?work:Lacaml.S.vec ->
        tau:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
      val ormqr_opt_lwork :
        ?side:Lacaml.Common.side ->
        ?trans:Lacaml.Common.trans2 ->
        ?m:int ->
        ?n:int ->
        ?k:int ->
        tau:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.S.mat -> ?cr:int -> ?cc:int -> Lacaml.S.mat -> int
      val ormqr :
        ?side:Lacaml.Common.side ->
        ?trans:Lacaml.Common.trans2 ->
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?work:Lacaml.S.vec ->
        tau:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.S.mat -> ?cr:int -> ?cc:int -> Lacaml.S.mat -> unit
      val gecon_min_lwork : int -> int
      val gecon_min_liwork : int -> int
      val gecon :
        ?n:int ->
        ?norm:Lacaml.Common.norm2 ->
        ?anorm:float ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> float
      val sycon_min_lwork : int -> int
      val sycon_min_liwork : int -> int
      val sycon :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?anorm:float ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> float
      val pocon_min_lwork : int -> int
      val pocon_min_liwork : int -> int
      val pocon :
        ?n:int ->
        ?up:bool ->
        ?anorm:float ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> float
      val gelsy_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gelsy_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gelsy :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?rcond:float ->
        ?jpvt:Lacaml.Common.int32_vec ->
        ?work:Lacaml.S.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gelsd_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gelsd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gelsd_min_iwork : int -> int -> int
      val gelsd :
        ?m:int ->
        ?n:int ->
        ?rcond:float ->
        ?ofss:int ->
        ?s:Lacaml.S.vec ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gelss_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gelss_opt_lwork :
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?m:int ->
        ?n:int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gelss :
        ?m:int ->
        ?n:int ->
        ?rcond:float ->
        ?ofss:int ->
        ?s:Lacaml.S.vec ->
        ?work:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gesvd_min_lwork : m:int -> n:int -> int
      val gesvd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.S.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.S.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.S.mat -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val gesvd :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.S.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.S.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.S.mat ->
        ?work:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec * Lacaml.S.mat * Lacaml.S.mat
      val gesdd_liwork : m:int -> n:int -> int
      val gesdd_min_lwork :
        ?jobz:Lacaml.Common.svd_job -> m:int -> n:int -> unit -> int
      val gesdd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?jobz:Lacaml.Common.svd_job ->
        ?s:Lacaml.S.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.S.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.S.mat ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val gesdd :
        ?m:int ->
        ?n:int ->
        ?jobz:Lacaml.Common.svd_job ->
        ?s:Lacaml.S.vec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.S.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.S.mat ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec * Lacaml.S.mat * Lacaml.S.mat
      val geev_min_lwork : ?vectors:bool -> int -> int
      val geev_opt_lwork :
        ?n:int ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.S.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.S.mat option ->
        ?ofswr:int ->
        ?wr:Lacaml.S.vec ->
        ?ofswi:int ->
        ?wi:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val geev :
        ?n:int ->
        ?work:Lacaml.S.vec ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.S.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.S.mat option ->
        ?ofswr:int ->
        ?wr:Lacaml.S.vec ->
        ?ofswi:int ->
        ?wi:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        Lacaml.S.mat * Lacaml.S.vec * Lacaml.S.vec * Lacaml.S.mat
      val syev_min_lwork : int -> int
      val syev_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val syev :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?work:Lacaml.S.vec ->
        ?ofsw:int ->
        ?w:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec
      val syevd_min_lwork : vectors:bool -> int -> int
      val syevd_min_liwork : vectors:bool -> int -> int
      val syevd_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val syevd_opt_liwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val syevd_opt_l_li_work :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int * int
      val syevd :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ofsw:int ->
        ?w:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec
      val sbev_min_lwork : int -> int
      val sbev :
        ?n:int ->
        ?kd:int ->
        ?zr:int ->
        ?zc:int ->
        ?z:Lacaml.S.mat ->
        ?up:bool ->
        ?work:Lacaml.S.vec ->
        ?ofsw:int ->
        ?w:Lacaml.S.vec ->
        ?abr:int -> ?abc:int -> Lacaml.S.mat -> Lacaml.S.vec
      val syevr_min_lwork : int -> int
      val syevr_min_liwork : int -> int
      val syevr_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val syevr_opt_liwork :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val syevr_opt_l_li_work :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int * int
      val syevr :
        ?n:int ->
        ?vectors:bool ->
        ?range:[ `A | `I of int * int | `V of float * float ] ->
        ?up:bool ->
        ?abstol:float ->
        ?work:Lacaml.S.vec ->
        ?iwork:Lacaml.Common.int32_vec ->
        ?ofsw:int ->
        ?w:Lacaml.S.vec ->
        ?zr:int ->
        ?zc:int ->
        ?z:Lacaml.S.mat ->
        ?isuppz:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        int * Lacaml.S.vec * Lacaml.S.mat * Lacaml.Common.int32_vec
      val sygv_opt_lwork :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?itype:[ `AB | `A_B | `BA ] ->
        ?ar:int ->
        ?ac:int -> Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val sygv :
        ?n:int ->
        ?vectors:bool ->
        ?up:bool ->
        ?work:Lacaml.S.vec ->
        ?ofsw:int ->
        ?w:Lacaml.S.vec ->
        ?itype:[ `AB | `A_B | `BA ] ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.vec
      val sbgv :
        ?n:int ->
        ?ka:int ->
        ?kb:int ->
        ?zr:int ->
        ?zc:int ->
        ?z:Lacaml.S.mat ->
        ?up:bool ->
        ?work:Lacaml.S.vec ->
        ?ofsw:int ->
        ?w:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.vec
      val swap :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.S.vec -> ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> unit
      val scal :
        ?n:int ->
        Lacaml.S.num_type -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
      val copy :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.S.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
      val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> float
      val axpy :
        ?n:int ->
        ?alpha:Lacaml.S.num_type ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.S.vec -> ?ofsy:int -> ?incy:int -> Lacaml.S.vec -> unit
      val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> int
      val amax :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.num_type
      val gemv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.S.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.S.vec ->
        ?trans:Lacaml.S.trans3 ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
      val gbmv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.S.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.S.vec ->
        ?trans:Lacaml.S.trans3 ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        int -> int -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
      val symv :
        ?n:int ->
        ?beta:Lacaml.S.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.S.vec ->
        ?up:bool ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> Lacaml.S.vec
      val trmv :
        ?n:int ->
        ?trans:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
      val trsv :
        ?n:int ->
        ?trans:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
      val tpmv :
        ?n:int ->
        ?trans:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.S.vec -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
      val tpsv :
        ?n:int ->
        ?trans:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.S.vec -> ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> unit
      val gemm :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml.S.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.S.mat ->
        ?transa:Lacaml.S.trans3 ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?transb:Lacaml.S.trans3 ->
        ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.mat
      val symm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?beta:Lacaml.S.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.S.mat ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.mat
      val trmm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val trsm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val syrk :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.S.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.S.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
      val syr2k :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.S.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.S.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.S.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat -> ?br:int -> ?bc:int -> Lacaml.S.mat -> Lacaml.S.mat
      val lacpy :
        ?uplo:[ `L | `U ] ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml.S.mat -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.mat
      val lassq :
        ?n:int ->
        ?scale:float ->
        ?sumsq:float ->
        ?ofsx:int -> ?incx:int -> Lacaml.S.vec -> float * float
      val larnv :
        ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
        ?iseed:Lacaml.Common.int32_vec ->
        ?n:int -> ?ofsx:int -> ?x:Lacaml.S.vec -> unit -> Lacaml.S.vec
      val lange_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lange :
        ?m:int ->
        ?n:int ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.S.rvec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> float
      val lauum :
        ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
      val getrf :
        ?m:int ->
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.Common.int32_vec
      val getrs :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?trans:Lacaml.S.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val getri_min_lwork : int -> int
      val getri_opt_lwork :
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val getri :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
      val sytrf_min_lwork : unit -> int
      val sytrf_opt_lwork :
        ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val sytrf :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.S.vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.Common.int32_vec
      val sytrs :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val sytri_min_lwork : int -> int
      val sytri :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.S.vec -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
      val potrf :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int -> ?jitter:Lacaml.S.num_type -> Lacaml.S.mat -> unit
      val potrs :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int ->
        ?br:int ->
        ?bc:int ->
        ?factorize:bool -> ?jitter:Lacaml.S.num_type -> Lacaml.S.mat -> unit
      val potri :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        ?factorize:bool -> ?jitter:Lacaml.S.num_type -> Lacaml.S.mat -> unit
      val trtrs :
        ?n:int ->
        ?up:bool ->
        ?trans:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val tbtrs :
        ?n:int ->
        ?kd:int ->
        ?up:bool ->
        ?trans:Lacaml.S.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val trtri :
        ?n:int ->
        ?up:bool ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> unit
      val geqrf_opt_lwork :
        ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.S.mat -> int
      val geqrf_min_lwork : n:int -> int
      val geqrf :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.S.vec ->
        ?tau:Lacaml.S.vec ->
        ?ar:int -> ?ac:int -> Lacaml.S.mat -> Lacaml.S.vec
      val gesv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val gbsv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.S.mat ->
        int -> int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val gtsv :
        ?n:int ->
        ?ofsdl:int ->
        Lacaml.S.vec ->
        ?ofsd:int ->
        Lacaml.S.vec ->
        ?ofsdu:int ->
        Lacaml.S.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val posv :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val ppsv :
        ?n:int ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.S.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val pbsv :
        ?n:int ->
        ?up:bool ->
        ?kd:int ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val ptsv :
        ?n:int ->
        ?ofsd:int ->
        Lacaml.S.vec ->
        ?ofse:int ->
        Lacaml.S.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val sysv_opt_lwork :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val sysv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.S.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val spsv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ofsap:int ->
        Lacaml.S.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
      val gels_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gels_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> int
      val gels :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.S.vec ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.S.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.S.mat -> unit
    end
  module Z :
    sig
      type prec = Bigarray.complex64_elt
      type num_type = Complex.t
      type vec =
          (Complex.t, Bigarray.complex64_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      type rvec =
          (float, Bigarray.float64_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      type mat =
          (Complex.t, Bigarray.complex64_elt, Bigarray.fortran_layout)
          Bigarray.Array2.t
      type trans3 = [ `C | `N | `T ]
      val prec : (Complex.t, Bigarray.complex64_elt) Bigarray.kind
      module Vec :
        sig
          val random :
            ?rnd_state:Random.State.t ->
            ?re_from:float ->
            ?re_range:float ->
            ?im_from:float -> ?im_range:float -> int -> Lacaml.Z.vec
          val create : int -> Lacaml.Z.vec
          val make : int -> Lacaml.Z.num_type -> Lacaml.Z.vec
          val make0 : int -> Lacaml.Z.vec
          val init : int -> (int -> Lacaml.Z.num_type) -> Lacaml.Z.vec
          val of_array : Lacaml.Z.num_type array -> Lacaml.Z.vec
          val to_array : Lacaml.Z.vec -> Lacaml.Z.num_type array
          val of_list : Lacaml.Z.num_type list -> Lacaml.Z.vec
          val to_list : Lacaml.Z.vec -> Lacaml.Z.num_type list
          val append : Lacaml.Z.vec -> Lacaml.Z.vec -> Lacaml.Z.vec
          val concat : Lacaml.Z.vec list -> Lacaml.Z.vec
          val empty : Lacaml.Z.vec
          val linspace :
            ?y:Lacaml.Z.vec ->
            Lacaml.Z.num_type -> Lacaml.Z.num_type -> int -> Lacaml.Z.vec
          val logspace :
            ?y:Lacaml.Z.vec ->
            Lacaml.Z.num_type ->
            Lacaml.Z.num_type -> ?base:float -> int -> Lacaml.Z.vec
          val dim : Lacaml.Z.vec -> int
          val map :
            (Lacaml.Z.num_type -> Lacaml.Z.num_type) ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.Z.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val iter :
            (Lacaml.Z.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
          val iteri :
            (int -> Lacaml.Z.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
          val fold :
            ('-> Lacaml.Z.num_type -> 'a) ->
            '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> 'a
          val fill :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type -> unit
          val rev : Lacaml.Z.vec -> Lacaml.Z.vec
          val max :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
          val min :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
          val sum :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
          val prod :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
          val add_const :
            Lacaml.Z.num_type ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.Z.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val sqr_nrm2 :
            ?stable:bool ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> float
          val ssqr :
            ?n:int ->
            ?c:Lacaml.Z.num_type ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
          val sort :
            ?cmp:(Lacaml.Z.num_type -> Lacaml.Z.num_type -> int) ->
            ?decr:bool ->
            ?n:int ->
            ?ofsp:int ->
            ?incp:int ->
            ?p:Lacaml.Common.int_vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
          val neg :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.Z.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val reci :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.Z.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val add :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.Z.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val sub :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.Z.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val mul :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.Z.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val div :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.Z.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val zpxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.Z.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val zmxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.Z.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.vec
          val ssqr_diff :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.Z.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
        end
      module Mat :
        sig
          val random :
            ?rnd_state:Random.State.t ->
            ?re_from:float ->
            ?re_range:float ->
            ?im_from:float -> ?im_range:float -> int -> int -> Lacaml.Z.mat
          val create : int -> int -> Lacaml.Z.mat
          val make : int -> int -> Lacaml.Z.num_type -> Lacaml.Z.mat
          val make0 : int -> int -> Lacaml.Z.mat
          val of_array : Lacaml.Z.num_type array array -> Lacaml.Z.mat
          val to_array : Lacaml.Z.mat -> Lacaml.Z.num_type array array
          val of_col_vecs : Lacaml.Z.vec array -> Lacaml.Z.mat
          val to_col_vecs : Lacaml.Z.mat -> Lacaml.Z.vec array
          val as_vec : Lacaml.Z.mat -> Lacaml.Z.vec
          val init_rows :
            int -> int -> (int -> int -> Lacaml.Z.num_type) -> Lacaml.Z.mat
          val init_cols :
            int -> int -> (int -> int -> Lacaml.Z.num_type) -> Lacaml.Z.mat
          val create_mvec : int -> Lacaml.Z.mat
          val make_mvec : int -> Lacaml.Z.num_type -> Lacaml.Z.mat
          val mvec_of_array : Lacaml.Z.num_type array -> Lacaml.Z.mat
          val mvec_to_array : Lacaml.Z.mat -> Lacaml.Z.num_type array
          val from_col_vec : Lacaml.Z.vec -> Lacaml.Z.mat
          val from_row_vec : Lacaml.Z.vec -> Lacaml.Z.mat
          val empty : Lacaml.Z.mat
          val identity : int -> Lacaml.Z.mat
          val of_diag : Lacaml.Z.vec -> Lacaml.Z.mat
          val dim1 : Lacaml.Z.mat -> int
          val dim2 : Lacaml.Z.mat -> int
          val col : Lacaml.Z.mat -> int -> Lacaml.Z.vec
          val copy_row :
            ?vec:Lacaml.Z.vec -> Lacaml.Z.mat -> int -> Lacaml.Z.vec
          val transpose_copy :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.Z.mat -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
          val transpose :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.mat
          val detri :
            ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
          val packed :
            ?up:bool ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.vec
          val unpacked : ?up:bool -> ?n:int -> Lacaml.Z.vec -> Lacaml.Z.mat
          val add_const :
            Lacaml.Z.num_type ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.Z.mat ->
            ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.mat
          val sum :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.num_type
          val fill :
            ?m:int ->
            ?n:int ->
            ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.num_type -> unit
          val copy_diag : Lacaml.Z.mat -> Lacaml.Z.vec
          val trace : Lacaml.Z.mat -> Lacaml.Z.num_type
          val scal :
            ?m:int ->
            ?n:int ->
            Lacaml.Z.num_type -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
          val scal_cols :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int -> Lacaml.Z.mat -> ?ofs:int -> Lacaml.Z.vec -> unit
          val scal_rows :
            ?m:int ->
            ?n:int ->
            ?ofs:int ->
            Lacaml.Z.vec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
          val axpy :
            ?m:int ->
            ?n:int ->
            ?alpha:Lacaml.Z.num_type ->
            ?xr:int ->
            ?xc:int ->
            x:Lacaml.Z.mat -> ?yr:int -> ?yc:int -> Lacaml.Z.mat -> unit
          val gemm_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.Z.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.Z.vec ->
            ?transa:Lacaml.Z.trans3 ->
            ?alpha:Lacaml.Z.num_type ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.Z.mat ->
            ?transb:Lacaml.Z.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.Z.mat -> Lacaml.Z.vec
          val syrk_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.Z.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.Z.vec ->
            ?trans:Lacaml.Common.trans2 ->
            ?alpha:Lacaml.Z.num_type ->
            ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.vec
          val gemm_trace :
            ?n:int ->
            ?k:int ->
            ?transa:Lacaml.Z.trans3 ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.Z.mat ->
            ?transb:Lacaml.Z.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.Z.mat -> Lacaml.Z.num_type
          val syrk_trace :
            ?n:int ->
            ?k:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.num_type
          val symm2_trace :
            ?n:int ->
            ?upa:bool ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.Z.mat ->
            ?upb:bool ->
            ?br:int -> ?bc:int -> Lacaml.Z.mat -> Lacaml.Z.num_type
          val map :
            (Lacaml.Z.num_type -> Lacaml.Z.num_type) ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.Z.mat ->
            ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.mat
          val fold_cols :
            ('-> Lacaml.Z.vec -> 'a) ->
            ?n:int -> ?ac:int -> '-> Lacaml.Z.mat -> 'a
        end
      val pp_num : Format.formatter -> Complex.t -> unit
      val pp_vec : (Complex.t, 'a) Lacaml.Io.pp_vec
      val pp_mat : (Complex.t, 'a) Lacaml.Io.pp_mat
      val dotu :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.Z.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
      val dotc :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.Z.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
      val lansy_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lansy :
        ?n:int ->
        ?up:bool ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.Z.rvec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> float
      val gecon_min_lwork : int -> int
      val gecon_min_lrwork : int -> int
      val gecon :
        ?n:int ->
        ?norm:Lacaml.Common.norm2 ->
        ?anorm:float ->
        ?work:Lacaml.Z.vec ->
        ?rwork:Lacaml.Z.rvec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> float
      val sycon_min_lwork : int -> int
      val sycon :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?anorm:float ->
        ?work:Lacaml.Z.vec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> float
      val pocon_min_lwork : int -> int
      val pocon_min_lrwork : int -> int
      val pocon :
        ?n:int ->
        ?up:bool ->
        ?anorm:float ->
        ?work:Lacaml.Z.vec ->
        ?rwork:Lacaml.Z.rvec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> float
      val gesvd_min_lwork : m:int -> n:int -> int
      val gesvd_lrwork : m:int -> n:int -> int
      val gesvd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.Z.rvec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.Z.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.Z.mat -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> int
      val gesvd :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.Z.rvec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.Z.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.Z.mat ->
        ?work:Lacaml.Z.vec ->
        ?rwork:Lacaml.Z.rvec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat -> Lacaml.Z.rvec * Lacaml.Z.mat * Lacaml.Z.mat
      val geev_min_lwork : int -> int
      val geev_min_lrwork : int -> int
      val geev_opt_lwork :
        ?n:int ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.Z.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.Z.mat option ->
        ?ofsw:int ->
        ?w:Lacaml.Z.vec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> int
      val geev :
        ?n:int ->
        ?work:Lacaml.Z.vec ->
        ?rwork:Lacaml.Z.vec ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.Z.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.Z.mat option ->
        ?ofsw:int ->
        ?w:Lacaml.Z.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.mat * Lacaml.Z.vec * Lacaml.Z.mat
      val swap :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.Z.vec -> ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> unit
      val scal :
        ?n:int ->
        Lacaml.Z.num_type -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
      val copy :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.Z.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
      val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> float
      val axpy :
        ?n:int ->
        ?alpha:Lacaml.Z.num_type ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.Z.vec -> ?ofsy:int -> ?incy:int -> Lacaml.Z.vec -> unit
      val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> int
      val amax :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.num_type
      val gemv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.Z.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.Z.vec ->
        ?trans:Lacaml.Z.trans3 ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
      val gbmv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.Z.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.Z.vec ->
        ?trans:Lacaml.Z.trans3 ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        int -> int -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
      val symv :
        ?n:int ->
        ?beta:Lacaml.Z.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.Z.vec ->
        ?up:bool ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> Lacaml.Z.vec
      val trmv :
        ?n:int ->
        ?trans:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
      val trsv :
        ?n:int ->
        ?trans:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
      val tpmv :
        ?n:int ->
        ?trans:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.Z.vec -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
      val tpsv :
        ?n:int ->
        ?trans:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.Z.vec -> ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> unit
      val gemm :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml.Z.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.Z.mat ->
        ?transa:Lacaml.Z.trans3 ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?transb:Lacaml.Z.trans3 ->
        ?br:int -> ?bc:int -> Lacaml.Z.mat -> Lacaml.Z.mat
      val symm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?beta:Lacaml.Z.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.Z.mat ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> Lacaml.Z.mat
      val trmm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.Z.mat -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val trsm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.Z.mat -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val syrk :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.Z.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.Z.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.mat
      val syr2k :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.Z.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.Z.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.Z.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> Lacaml.Z.mat
      val lacpy :
        ?uplo:[ `L | `U ] ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml.Z.mat -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.mat
      val lassq :
        ?n:int ->
        ?scale:float ->
        ?sumsq:float ->
        ?ofsx:int -> ?incx:int -> Lacaml.Z.vec -> float * float
      val larnv :
        ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
        ?iseed:Lacaml.Common.int32_vec ->
        ?n:int -> ?ofsx:int -> ?x:Lacaml.Z.vec -> unit -> Lacaml.Z.vec
      val lange_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lange :
        ?m:int ->
        ?n:int ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.Z.rvec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> float
      val lauum :
        ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
      val getrf :
        ?m:int ->
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Common.int32_vec
      val getrs :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?trans:Lacaml.Z.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val getri_min_lwork : int -> int
      val getri_opt_lwork :
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> int
      val getri :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.Z.vec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
      val sytrf_min_lwork : unit -> int
      val sytrf_opt_lwork :
        ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> int
      val sytrf :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.Z.vec ->
        ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Common.int32_vec
      val sytrs :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val sytri_min_lwork : int -> int
      val sytri :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.Z.vec -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
      val potrf :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int -> ?jitter:Lacaml.Z.num_type -> Lacaml.Z.mat -> unit
      val potrs :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int ->
        ?br:int ->
        ?bc:int ->
        ?factorize:bool -> ?jitter:Lacaml.Z.num_type -> Lacaml.Z.mat -> unit
      val potri :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        ?factorize:bool -> ?jitter:Lacaml.Z.num_type -> Lacaml.Z.mat -> unit
      val trtrs :
        ?n:int ->
        ?up:bool ->
        ?trans:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val tbtrs :
        ?n:int ->
        ?kd:int ->
        ?up:bool ->
        ?trans:Lacaml.Z.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val trtri :
        ?n:int ->
        ?up:bool ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int -> ?ac:int -> Lacaml.Z.mat -> unit
      val geqrf_opt_lwork :
        ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.Z.mat -> int
      val geqrf_min_lwork : n:int -> int
      val geqrf :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.Z.vec ->
        ?tau:Lacaml.Z.vec ->
        ?ar:int -> ?ac:int -> Lacaml.Z.mat -> Lacaml.Z.vec
      val gesv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val gbsv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.Z.mat ->
        int -> int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val gtsv :
        ?n:int ->
        ?ofsdl:int ->
        Lacaml.Z.vec ->
        ?ofsd:int ->
        Lacaml.Z.vec ->
        ?ofsdu:int ->
        Lacaml.Z.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val posv :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val ppsv :
        ?n:int ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.Z.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val pbsv :
        ?n:int ->
        ?up:bool ->
        ?kd:int ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val ptsv :
        ?n:int ->
        ?ofsd:int ->
        Lacaml.Z.vec ->
        ?ofse:int ->
        Lacaml.Z.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val sysv_opt_lwork :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> int
      val sysv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.Z.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val spsv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ofsap:int ->
        Lacaml.Z.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
      val gels_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gels_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> int
      val gels :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.Z.vec ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.Z.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.Z.mat -> unit
    end
  module C :
    sig
      type prec = Bigarray.complex32_elt
      type num_type = Complex.t
      type vec =
          (Complex.t, Bigarray.complex32_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      type rvec =
          (float, Bigarray.float32_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      type mat =
          (Complex.t, Bigarray.complex32_elt, Bigarray.fortran_layout)
          Bigarray.Array2.t
      type trans3 = [ `C | `N | `T ]
      val prec : (Complex.t, Bigarray.complex32_elt) Bigarray.kind
      module Vec :
        sig
          val random :
            ?rnd_state:Random.State.t ->
            ?re_from:float ->
            ?re_range:float ->
            ?im_from:float -> ?im_range:float -> int -> Lacaml.C.vec
          val create : int -> Lacaml.C.vec
          val make : int -> Lacaml.C.num_type -> Lacaml.C.vec
          val make0 : int -> Lacaml.C.vec
          val init : int -> (int -> Lacaml.C.num_type) -> Lacaml.C.vec
          val of_array : Lacaml.C.num_type array -> Lacaml.C.vec
          val to_array : Lacaml.C.vec -> Lacaml.C.num_type array
          val of_list : Lacaml.C.num_type list -> Lacaml.C.vec
          val to_list : Lacaml.C.vec -> Lacaml.C.num_type list
          val append : Lacaml.C.vec -> Lacaml.C.vec -> Lacaml.C.vec
          val concat : Lacaml.C.vec list -> Lacaml.C.vec
          val empty : Lacaml.C.vec
          val linspace :
            ?y:Lacaml.C.vec ->
            Lacaml.C.num_type -> Lacaml.C.num_type -> int -> Lacaml.C.vec
          val logspace :
            ?y:Lacaml.C.vec ->
            Lacaml.C.num_type ->
            Lacaml.C.num_type -> ?base:float -> int -> Lacaml.C.vec
          val dim : Lacaml.C.vec -> int
          val map :
            (Lacaml.C.num_type -> Lacaml.C.num_type) ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.C.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
          val iter :
            (Lacaml.C.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
          val iteri :
            (int -> Lacaml.C.num_type -> unit) ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
          val fold :
            ('-> Lacaml.C.num_type -> 'a) ->
            '-> ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> 'a
          val fill :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type -> unit
          val rev : Lacaml.C.vec -> Lacaml.C.vec
          val max :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
          val min :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
          val sum :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
          val prod :
            ?n:int ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
          val add_const :
            Lacaml.C.num_type ->
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.C.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
          val sqr_nrm2 :
            ?stable:bool ->
            ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> float
          val ssqr :
            ?n:int ->
            ?c:Lacaml.C.num_type ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
          val sort :
            ?cmp:(Lacaml.C.num_type -> Lacaml.C.num_type -> int) ->
            ?decr:bool ->
            ?n:int ->
            ?ofsp:int ->
            ?incp:int ->
            ?p:Lacaml.Common.int_vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
          val neg :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.C.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
          val reci :
            ?n:int ->
            ?ofsy:int ->
            ?incy:int ->
            ?y:Lacaml.C.vec ->
            ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
          val add :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.C.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
          val sub :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.C.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
          val mul :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.C.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
          val div :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.C.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
          val zpxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.C.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
          val zmxy :
            ?n:int ->
            ?ofsz:int ->
            ?incz:int ->
            ?z:Lacaml.C.vec ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.vec
          val ssqr_diff :
            ?n:int ->
            ?ofsx:int ->
            ?incx:int ->
            Lacaml.C.vec ->
            ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.num_type
        end
      module Mat :
        sig
          val random :
            ?rnd_state:Random.State.t ->
            ?re_from:float ->
            ?re_range:float ->
            ?im_from:float -> ?im_range:float -> int -> int -> Lacaml.C.mat
          val create : int -> int -> Lacaml.C.mat
          val make : int -> int -> Lacaml.C.num_type -> Lacaml.C.mat
          val make0 : int -> int -> Lacaml.C.mat
          val of_array : Lacaml.C.num_type array array -> Lacaml.C.mat
          val to_array : Lacaml.C.mat -> Lacaml.C.num_type array array
          val of_col_vecs : Lacaml.C.vec array -> Lacaml.C.mat
          val to_col_vecs : Lacaml.C.mat -> Lacaml.C.vec array
          val as_vec : Lacaml.C.mat -> Lacaml.C.vec
          val init_rows :
            int -> int -> (int -> int -> Lacaml.C.num_type) -> Lacaml.C.mat
          val init_cols :
            int -> int -> (int -> int -> Lacaml.C.num_type) -> Lacaml.C.mat
          val create_mvec : int -> Lacaml.C.mat
          val make_mvec : int -> Lacaml.C.num_type -> Lacaml.C.mat
          val mvec_of_array : Lacaml.C.num_type array -> Lacaml.C.mat
          val mvec_to_array : Lacaml.C.mat -> Lacaml.C.num_type array
          val from_col_vec : Lacaml.C.vec -> Lacaml.C.mat
          val from_row_vec : Lacaml.C.vec -> Lacaml.C.mat
          val empty : Lacaml.C.mat
          val identity : int -> Lacaml.C.mat
          val of_diag : Lacaml.C.vec -> Lacaml.C.mat
          val dim1 : Lacaml.C.mat -> int
          val dim2 : Lacaml.C.mat -> int
          val col : Lacaml.C.mat -> int -> Lacaml.C.vec
          val copy_row :
            ?vec:Lacaml.C.vec -> Lacaml.C.mat -> int -> Lacaml.C.vec
          val transpose_copy :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
          val transpose :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
          val detri :
            ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
          val packed :
            ?up:bool ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.vec
          val unpacked : ?up:bool -> ?n:int -> Lacaml.C.vec -> Lacaml.C.mat
          val add_const :
            Lacaml.C.num_type ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.C.mat ->
            ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
          val sum :
            ?m:int ->
            ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.num_type
          val fill :
            ?m:int ->
            ?n:int ->
            ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.num_type -> unit
          val copy_diag : Lacaml.C.mat -> Lacaml.C.vec
          val trace : Lacaml.C.mat -> Lacaml.C.num_type
          val scal :
            ?m:int ->
            ?n:int ->
            Lacaml.C.num_type -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
          val scal_cols :
            ?m:int ->
            ?n:int ->
            ?ar:int ->
            ?ac:int -> Lacaml.C.mat -> ?ofs:int -> Lacaml.C.vec -> unit
          val scal_rows :
            ?m:int ->
            ?n:int ->
            ?ofs:int ->
            Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
          val axpy :
            ?m:int ->
            ?n:int ->
            ?alpha:Lacaml.C.num_type ->
            ?xr:int ->
            ?xc:int ->
            x:Lacaml.C.mat -> ?yr:int -> ?yc:int -> Lacaml.C.mat -> unit
          val gemm_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.C.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.C.vec ->
            ?transa:Lacaml.C.trans3 ->
            ?alpha:Lacaml.C.num_type ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.C.mat ->
            ?transb:Lacaml.C.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.vec
          val syrk_diag :
            ?n:int ->
            ?k:int ->
            ?beta:Lacaml.C.num_type ->
            ?ofsy:int ->
            ?y:Lacaml.C.vec ->
            ?trans:Lacaml.Common.trans2 ->
            ?alpha:Lacaml.C.num_type ->
            ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.vec
          val gemm_trace :
            ?n:int ->
            ?k:int ->
            ?transa:Lacaml.C.trans3 ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.C.mat ->
            ?transb:Lacaml.C.trans3 ->
            ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.num_type
          val syrk_trace :
            ?n:int ->
            ?k:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.num_type
          val symm2_trace :
            ?n:int ->
            ?upa:bool ->
            ?ar:int ->
            ?ac:int ->
            Lacaml.C.mat ->
            ?upb:bool ->
            ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.num_type
          val map :
            (Lacaml.C.num_type -> Lacaml.C.num_type) ->
            ?m:int ->
            ?n:int ->
            ?br:int ->
            ?bc:int ->
            ?b:Lacaml.C.mat ->
            ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
          val fold_cols :
            ('-> Lacaml.C.vec -> 'a) ->
            ?n:int -> ?ac:int -> '-> Lacaml.C.mat -> 'a
        end
      val pp_num : Format.formatter -> Complex.t -> unit
      val pp_vec : (Complex.t, 'a) Lacaml.Io.pp_vec
      val pp_mat : (Complex.t, 'a) Lacaml.Io.pp_mat
      val dotu :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val dotc :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.C.vec ->
        ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val lansy_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lansy :
        ?n:int ->
        ?up:bool ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
      val gecon_min_lwork : int -> int
      val gecon_min_lrwork : int -> int
      val gecon :
        ?n:int ->
        ?norm:Lacaml.Common.norm2 ->
        ?anorm:float ->
        ?work:Lacaml.C.vec ->
        ?rwork:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
      val sycon_min_lwork : int -> int
      val sycon :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?anorm:float ->
        ?work:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
      val pocon_min_lwork : int -> int
      val pocon_min_lrwork : int -> int
      val pocon :
        ?n:int ->
        ?up:bool ->
        ?anorm:float ->
        ?work:Lacaml.C.vec ->
        ?rwork:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
      val gesvd_min_lwork : m:int -> n:int -> int
      val gesvd_lrwork : m:int -> n:int -> int
      val gesvd_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.C.rvec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.C.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.C.mat -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
      val gesvd :
        ?m:int ->
        ?n:int ->
        ?jobu:Lacaml.Common.svd_job ->
        ?jobvt:Lacaml.Common.svd_job ->
        ?s:Lacaml.C.rvec ->
        ?ur:int ->
        ?uc:int ->
        ?u:Lacaml.C.mat ->
        ?vtr:int ->
        ?vtc:int ->
        ?vt:Lacaml.C.mat ->
        ?work:Lacaml.C.vec ->
        ?rwork:Lacaml.C.rvec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat -> Lacaml.C.rvec * Lacaml.C.mat * Lacaml.C.mat
      val geev_min_lwork : int -> int
      val geev_min_lrwork : int -> int
      val geev_opt_lwork :
        ?n:int ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.C.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.C.mat option ->
        ?ofsw:int ->
        ?w:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
      val geev :
        ?n:int ->
        ?work:Lacaml.C.vec ->
        ?rwork:Lacaml.C.vec ->
        ?vlr:int ->
        ?vlc:int ->
        ?vl:Lacaml.C.mat option ->
        ?vrr:int ->
        ?vrc:int ->
        ?vr:Lacaml.C.mat option ->
        ?ofsw:int ->
        ?w:Lacaml.C.vec ->
        ?ar:int ->
        ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat * Lacaml.C.vec * Lacaml.C.mat
      val swap :
        ?n:int ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.C.vec -> ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> unit
      val scal :
        ?n:int ->
        Lacaml.C.num_type -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val copy :
        ?n:int ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> float
      val axpy :
        ?n:int ->
        ?alpha:Lacaml.C.num_type ->
        ?ofsx:int ->
        ?incx:int ->
        x:Lacaml.C.vec -> ?ofsy:int -> ?incy:int -> Lacaml.C.vec -> unit
      val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> int
      val amax :
        ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.num_type
      val gemv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.C.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?trans:Lacaml.C.trans3 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val gbmv :
        ?m:int ->
        ?n:int ->
        ?beta:Lacaml.C.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?trans:Lacaml.C.trans3 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        int -> int -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val symv :
        ?n:int ->
        ?beta:Lacaml.C.num_type ->
        ?ofsy:int ->
        ?incy:int ->
        ?y:Lacaml.C.vec ->
        ?up:bool ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> Lacaml.C.vec
      val trmv :
        ?n:int ->
        ?trans:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val trsv :
        ?n:int ->
        ?trans:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val tpmv :
        ?n:int ->
        ?trans:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.C.vec -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val tpsv :
        ?n:int ->
        ?trans:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.C.vec -> ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> unit
      val gemm :
        ?m:int ->
        ?n:int ->
        ?k:int ->
        ?beta:Lacaml.C.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.C.mat ->
        ?transa:Lacaml.C.trans3 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?transb:Lacaml.C.trans3 ->
        ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.mat
      val symm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?beta:Lacaml.C.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.C.mat ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.mat
      val trmm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val trsm :
        ?m:int ->
        ?n:int ->
        ?side:Lacaml.Common.side ->
        ?up:bool ->
        ?transa:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        a:Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val syrk :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.C.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.C.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
      val syr2k :
        ?n:int ->
        ?k:int ->
        ?up:bool ->
        ?beta:Lacaml.C.num_type ->
        ?cr:int ->
        ?cc:int ->
        ?c:Lacaml.C.mat ->
        ?trans:Lacaml.Common.trans2 ->
        ?alpha:Lacaml.C.num_type ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat -> ?br:int -> ?bc:int -> Lacaml.C.mat -> Lacaml.C.mat
      val lacpy :
        ?uplo:[ `L | `U ] ->
        ?m:int ->
        ?n:int ->
        ?br:int ->
        ?bc:int ->
        ?b:Lacaml.C.mat -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.mat
      val lassq :
        ?n:int ->
        ?scale:float ->
        ?sumsq:float ->
        ?ofsx:int -> ?incx:int -> Lacaml.C.vec -> float * float
      val larnv :
        ?idist:[ `Normal | `Uniform0 | `Uniform1 ] ->
        ?iseed:Lacaml.Common.int32_vec ->
        ?n:int -> ?ofsx:int -> ?x:Lacaml.C.vec -> unit -> Lacaml.C.vec
      val lange_min_lwork : int -> Lacaml.Common.norm4 -> int
      val lange :
        ?m:int ->
        ?n:int ->
        ?norm:Lacaml.Common.norm4 ->
        ?work:Lacaml.C.rvec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> float
      val lauum :
        ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val getrf :
        ?m:int ->
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.Common.int32_vec
      val getrs :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?trans:Lacaml.C.trans3 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val getri_min_lwork : int -> int
      val getri_opt_lwork :
        ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
      val getri :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val sytrf_min_lwork : unit -> int
      val sytrf_opt_lwork :
        ?n:int -> ?up:bool -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
      val sytrf :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.C.vec ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.Common.int32_vec
      val sytrs :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val sytri_min_lwork : int -> int
      val sytri :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.C.vec -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val potrf :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int -> ?jitter:Lacaml.C.num_type -> Lacaml.C.mat -> unit
      val potrs :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int ->
        ?br:int ->
        ?bc:int ->
        ?factorize:bool -> ?jitter:Lacaml.C.num_type -> Lacaml.C.mat -> unit
      val potri :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        ?factorize:bool -> ?jitter:Lacaml.C.num_type -> Lacaml.C.mat -> unit
      val trtrs :
        ?n:int ->
        ?up:bool ->
        ?trans:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val tbtrs :
        ?n:int ->
        ?kd:int ->
        ?up:bool ->
        ?trans:Lacaml.C.trans3 ->
        ?diag:Lacaml.Common.diag ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val trtri :
        ?n:int ->
        ?up:bool ->
        ?diag:Lacaml.Common.diag ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> unit
      val geqrf_opt_lwork :
        ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml.C.mat -> int
      val geqrf_min_lwork : n:int -> int
      val geqrf :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.C.vec ->
        ?tau:Lacaml.C.vec ->
        ?ar:int -> ?ac:int -> Lacaml.C.mat -> Lacaml.C.vec
      val gesv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val gbsv :
        ?n:int ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.C.mat ->
        int -> int -> ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val gtsv :
        ?n:int ->
        ?ofsdl:int ->
        Lacaml.C.vec ->
        ?ofsd:int ->
        Lacaml.C.vec ->
        ?ofsdu:int ->
        Lacaml.C.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val posv :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val ppsv :
        ?n:int ->
        ?up:bool ->
        ?ofsap:int ->
        Lacaml.C.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val pbsv :
        ?n:int ->
        ?up:bool ->
        ?kd:int ->
        ?abr:int ->
        ?abc:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val ptsv :
        ?n:int ->
        ?ofsd:int ->
        Lacaml.C.vec ->
        ?ofse:int ->
        Lacaml.C.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val sysv_opt_lwork :
        ?n:int ->
        ?up:bool ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> int
      val sysv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?work:Lacaml.C.vec ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val spsv :
        ?n:int ->
        ?up:bool ->
        ?ipiv:Lacaml.Common.int32_vec ->
        ?ofsap:int ->
        Lacaml.C.vec ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
      val gels_min_lwork : m:int -> n:int -> nrhs:int -> int
      val gels_opt_lwork :
        ?m:int ->
        ?n:int ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> int
      val gels :
        ?m:int ->
        ?n:int ->
        ?work:Lacaml.C.vec ->
        ?trans:Lacaml.Common.trans2 ->
        ?ar:int ->
        ?ac:int ->
        Lacaml.C.mat ->
        ?nrhs:int -> ?br:int -> ?bc:int -> Lacaml.C.mat -> unit
    end
end