sig
  module type BLOP =
    sig
      type t
      and precision_elt
      and precision_elt_real
      val precision : (Nla.BLOP.t, Nla.BLOP.precision_elt) Bigarray.kind
      val precision_real : (float, Nla.BLOP.precision_elt_real) Bigarray.kind
      val machine_epsilon : float
      val re : Nla.BLOP.t -> float
      val im : Nla.BLOP.t -> float
      val conjugate : Nla.BLOP.t -> Nla.BLOP.t
      val zero : Nla.BLOP.t
      val one : Nla.BLOP.t
      val minus_one : Nla.BLOP.t
      val fromInt : int -> Nla.BLOP.t
      val toInt : Nla.BLOP.t -> int
      val fromFloat : float -> Nla.BLOP.t
      val randn : unit -> Nla.BLOP.t
      val printfn : Nla.BLOP.t -> unit
      val addn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val subn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val muln : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val mulr : float -> Nla.BLOP.t -> Nla.BLOP.t
      type matrix
      and transformer = Nla.BLOP.matrix -> unit
      and transform
      and factor
      val ( $@ ) : Nla.BLOP.matrix -> int * int -> Nla.BLOP.t
      val ( => ) : Nla.BLOP.t -> int * int -> Nla.BLOP.matrix -> unit
      val noOfRows : Nla.BLOP.matrix -> int
      val noOfCols : Nla.BLOP.matrix -> int
      val printMatrixHeight : int Pervasives.ref
      val printMatrixWidth : int Pervasives.ref
      val printMatrix : Nla.BLOP.matrix -> unit
      val rawMatrix : int -> int -> Nla.BLOP.matrix
      val consts : Nla.BLOP.t -> int -> int -> Nla.BLOP.matrix
      val const : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val zeros : int -> int -> Nla.BLOP.matrix
      val ones : int -> int -> Nla.BLOP.matrix
      val randomMatrix : int -> int -> Nla.BLOP.matrix
      val fun2mat :
        (int -> int -> Nla.BLOP.t) -> int -> int -> Nla.BLOP.matrix
      val fun2mat' : (int -> int -> Nla.BLOP.t) -> Nla.BLOP.matrix -> unit
      val eye : int -> int -> Nla.BLOP.matrix
      val matrix : Nla.BLOP.t array array -> Nla.BLOP.matrix
      type range = Range of int * int | All
      val ( $ ) :
        Nla.BLOP.matrix -> Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix
      val ( <-> ) : int -> int -> Nla.BLOP.range
      val partition2x1 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x2 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition2x2 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x1 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x3 :
        int ->
        int ->
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partitionInfx1 :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partition1xInf :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partitionNx1 :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val partition1xN :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val ooo : Nla.BLOP.matrix -> unit
      val matrix2x1 :
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix3x1 :
        int ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x2 :
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x3 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix4x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrixInfx1 :
        int list -> Nla.BLOP.transformer list -> Nla.BLOP.matrix -> unit
      val copy : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val iD : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( $=> ) :
        Nla.BLOP.matrix ->
        Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix -> unit
      val ( <-| ) : Nla.BLOP.matrix -> Nla.BLOP.transformer -> unit
      val ( <-$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |+| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |-| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |++| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |--| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( +$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( -$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp' : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val conjg' : Nla.BLOP.matrix -> unit
      val ( |*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( *$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *$~ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( |*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val norm1 : Nla.BLOP.matrix -> float
      val normInf : Nla.BLOP.matrix -> float
      val normF : Nla.BLOP.matrix -> float
      val normMax : Nla.BLOP.matrix -> float
      val lq' : Nla.BLOP.matrix -> Nla.BLOP.factor * Nla.BLOP.transform
      val ql' : Nla.BLOP.matrix -> Nla.BLOP.transform * Nla.BLOP.factor
      val copyL : Nla.BLOP.factor -> Nla.BLOP.matrix
      val iDL : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( @* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( @~* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( *@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val ( *~@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val subs' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val subsT' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( |/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( /$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( /~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val scale' : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val rowScale' :
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale' :
        Nla.BLOP.matrix ->
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val scale_real' : float -> Nla.BLOP.matrix -> unit
      val rowScale_real' :
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale_real' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val svd' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val svdL' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val svdR' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val singValues' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val cond : Nla.BLOP.matrix -> float
    end
  module DBlop :
    sig
      type t = float
      and precision_elt = Bigarray.float64_elt
      and precision_elt_real = Bigarray.float64_elt
      val precision : (Nla.BLOP.t, Nla.BLOP.precision_elt) Bigarray.kind
      val precision_real : (float, Nla.BLOP.precision_elt_real) Bigarray.kind
      val machine_epsilon : float
      val re : Nla.BLOP.t -> float
      val im : Nla.BLOP.t -> float
      val conjugate : Nla.BLOP.t -> Nla.BLOP.t
      val zero : Nla.BLOP.t
      val one : Nla.BLOP.t
      val minus_one : Nla.BLOP.t
      val fromInt : int -> Nla.BLOP.t
      val toInt : Nla.BLOP.t -> int
      val fromFloat : float -> Nla.BLOP.t
      val randn : unit -> Nla.BLOP.t
      val printfn : Nla.BLOP.t -> unit
      val addn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val subn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val muln : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val mulr : float -> Nla.BLOP.t -> Nla.BLOP.t
      type matrix
      and transformer = Nla.BLOP.matrix -> unit
      and transform
      and factor
      val ( $@ ) : Nla.BLOP.matrix -> int * int -> Nla.BLOP.t
      val ( => ) : Nla.BLOP.t -> int * int -> Nla.BLOP.matrix -> unit
      val noOfRows : Nla.BLOP.matrix -> int
      val noOfCols : Nla.BLOP.matrix -> int
      val printMatrixHeight : int Pervasives.ref
      val printMatrixWidth : int Pervasives.ref
      val printMatrix : Nla.BLOP.matrix -> unit
      val rawMatrix : int -> int -> Nla.BLOP.matrix
      val consts : Nla.BLOP.t -> int -> int -> Nla.BLOP.matrix
      val const : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val zeros : int -> int -> Nla.BLOP.matrix
      val ones : int -> int -> Nla.BLOP.matrix
      val randomMatrix : int -> int -> Nla.BLOP.matrix
      val fun2mat :
        (int -> int -> Nla.BLOP.t) -> int -> int -> Nla.BLOP.matrix
      val fun2mat' : (int -> int -> Nla.BLOP.t) -> Nla.BLOP.matrix -> unit
      val eye : int -> int -> Nla.BLOP.matrix
      val matrix : Nla.BLOP.t array array -> Nla.BLOP.matrix
      type range = Range of int * int | All
      val ( $ ) :
        Nla.BLOP.matrix -> Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix
      val ( <-> ) : int -> int -> Nla.BLOP.range
      val partition2x1 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x2 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition2x2 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x1 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x3 :
        int ->
        int ->
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partitionInfx1 :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partition1xInf :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partitionNx1 :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val partition1xN :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val ooo : Nla.BLOP.matrix -> unit
      val matrix2x1 :
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix3x1 :
        int ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x2 :
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x3 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix4x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrixInfx1 :
        int list -> Nla.BLOP.transformer list -> Nla.BLOP.matrix -> unit
      val copy : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val iD : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( $=> ) :
        Nla.BLOP.matrix ->
        Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix -> unit
      val ( <-| ) : Nla.BLOP.matrix -> Nla.BLOP.transformer -> unit
      val ( <-$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |+| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |-| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |++| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |--| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( +$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( -$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp' : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val conjg' : Nla.BLOP.matrix -> unit
      val ( |*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( *$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *$~ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( |*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val norm1 : Nla.BLOP.matrix -> float
      val normInf : Nla.BLOP.matrix -> float
      val normF : Nla.BLOP.matrix -> float
      val normMax : Nla.BLOP.matrix -> float
      val lq' : Nla.BLOP.matrix -> Nla.BLOP.factor * Nla.BLOP.transform
      val ql' : Nla.BLOP.matrix -> Nla.BLOP.transform * Nla.BLOP.factor
      val copyL : Nla.BLOP.factor -> Nla.BLOP.matrix
      val iDL : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( @* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( @~* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( *@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val ( *~@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val subs' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val subsT' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( |/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( /$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( /~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val scale' : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val rowScale' :
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale' :
        Nla.BLOP.matrix ->
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val scale_real' : float -> Nla.BLOP.matrix -> unit
      val rowScale_real' :
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale_real' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val svd' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val svdL' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val svdR' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val singValues' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val cond : Nla.BLOP.matrix -> float
    end
  module SBlop :
    sig
      type t = float
      and precision_elt = Bigarray.float32_elt
      and precision_elt_real = Bigarray.float32_elt
      val precision : (Nla.BLOP.t, Nla.BLOP.precision_elt) Bigarray.kind
      val precision_real : (float, Nla.BLOP.precision_elt_real) Bigarray.kind
      val machine_epsilon : float
      val re : Nla.BLOP.t -> float
      val im : Nla.BLOP.t -> float
      val conjugate : Nla.BLOP.t -> Nla.BLOP.t
      val zero : Nla.BLOP.t
      val one : Nla.BLOP.t
      val minus_one : Nla.BLOP.t
      val fromInt : int -> Nla.BLOP.t
      val toInt : Nla.BLOP.t -> int
      val fromFloat : float -> Nla.BLOP.t
      val randn : unit -> Nla.BLOP.t
      val printfn : Nla.BLOP.t -> unit
      val addn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val subn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val muln : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val mulr : float -> Nla.BLOP.t -> Nla.BLOP.t
      type matrix
      and transformer = Nla.BLOP.matrix -> unit
      and transform
      and factor
      val ( $@ ) : Nla.BLOP.matrix -> int * int -> Nla.BLOP.t
      val ( => ) : Nla.BLOP.t -> int * int -> Nla.BLOP.matrix -> unit
      val noOfRows : Nla.BLOP.matrix -> int
      val noOfCols : Nla.BLOP.matrix -> int
      val printMatrixHeight : int Pervasives.ref
      val printMatrixWidth : int Pervasives.ref
      val printMatrix : Nla.BLOP.matrix -> unit
      val rawMatrix : int -> int -> Nla.BLOP.matrix
      val consts : Nla.BLOP.t -> int -> int -> Nla.BLOP.matrix
      val const : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val zeros : int -> int -> Nla.BLOP.matrix
      val ones : int -> int -> Nla.BLOP.matrix
      val randomMatrix : int -> int -> Nla.BLOP.matrix
      val fun2mat :
        (int -> int -> Nla.BLOP.t) -> int -> int -> Nla.BLOP.matrix
      val fun2mat' : (int -> int -> Nla.BLOP.t) -> Nla.BLOP.matrix -> unit
      val eye : int -> int -> Nla.BLOP.matrix
      val matrix : Nla.BLOP.t array array -> Nla.BLOP.matrix
      type range = Range of int * int | All
      val ( $ ) :
        Nla.BLOP.matrix -> Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix
      val ( <-> ) : int -> int -> Nla.BLOP.range
      val partition2x1 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x2 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition2x2 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x1 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x3 :
        int ->
        int ->
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partitionInfx1 :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partition1xInf :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partitionNx1 :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val partition1xN :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val ooo : Nla.BLOP.matrix -> unit
      val matrix2x1 :
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix3x1 :
        int ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x2 :
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x3 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix4x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrixInfx1 :
        int list -> Nla.BLOP.transformer list -> Nla.BLOP.matrix -> unit
      val copy : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val iD : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( $=> ) :
        Nla.BLOP.matrix ->
        Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix -> unit
      val ( <-| ) : Nla.BLOP.matrix -> Nla.BLOP.transformer -> unit
      val ( <-$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |+| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |-| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |++| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |--| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( +$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( -$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp' : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val conjg' : Nla.BLOP.matrix -> unit
      val ( |*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( *$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *$~ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( |*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val norm1 : Nla.BLOP.matrix -> float
      val normInf : Nla.BLOP.matrix -> float
      val normF : Nla.BLOP.matrix -> float
      val normMax : Nla.BLOP.matrix -> float
      val lq' : Nla.BLOP.matrix -> Nla.BLOP.factor * Nla.BLOP.transform
      val ql' : Nla.BLOP.matrix -> Nla.BLOP.transform * Nla.BLOP.factor
      val copyL : Nla.BLOP.factor -> Nla.BLOP.matrix
      val iDL : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( @* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( @~* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( *@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val ( *~@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val subs' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val subsT' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( |/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( /$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( /~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val scale' : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val rowScale' :
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale' :
        Nla.BLOP.matrix ->
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val scale_real' : float -> Nla.BLOP.matrix -> unit
      val rowScale_real' :
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale_real' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val svd' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val svdL' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val svdR' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val singValues' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val cond : Nla.BLOP.matrix -> float
    end
  module ZBlop :
    sig
      type t = Complex.t
      and precision_elt = Bigarray.complex64_elt
      and precision_elt_real = Bigarray.float64_elt
      val precision : (Nla.BLOP.t, Nla.BLOP.precision_elt) Bigarray.kind
      val precision_real : (float, Nla.BLOP.precision_elt_real) Bigarray.kind
      val machine_epsilon : float
      val re : Nla.BLOP.t -> float
      val im : Nla.BLOP.t -> float
      val conjugate : Nla.BLOP.t -> Nla.BLOP.t
      val zero : Nla.BLOP.t
      val one : Nla.BLOP.t
      val minus_one : Nla.BLOP.t
      val fromInt : int -> Nla.BLOP.t
      val toInt : Nla.BLOP.t -> int
      val fromFloat : float -> Nla.BLOP.t
      val randn : unit -> Nla.BLOP.t
      val printfn : Nla.BLOP.t -> unit
      val addn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val subn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val muln : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val mulr : float -> Nla.BLOP.t -> Nla.BLOP.t
      type matrix
      and transformer = Nla.BLOP.matrix -> unit
      and transform
      and factor
      val ( $@ ) : Nla.BLOP.matrix -> int * int -> Nla.BLOP.t
      val ( => ) : Nla.BLOP.t -> int * int -> Nla.BLOP.matrix -> unit
      val noOfRows : Nla.BLOP.matrix -> int
      val noOfCols : Nla.BLOP.matrix -> int
      val printMatrixHeight : int Pervasives.ref
      val printMatrixWidth : int Pervasives.ref
      val printMatrix : Nla.BLOP.matrix -> unit
      val rawMatrix : int -> int -> Nla.BLOP.matrix
      val consts : Nla.BLOP.t -> int -> int -> Nla.BLOP.matrix
      val const : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val zeros : int -> int -> Nla.BLOP.matrix
      val ones : int -> int -> Nla.BLOP.matrix
      val randomMatrix : int -> int -> Nla.BLOP.matrix
      val fun2mat :
        (int -> int -> Nla.BLOP.t) -> int -> int -> Nla.BLOP.matrix
      val fun2mat' : (int -> int -> Nla.BLOP.t) -> Nla.BLOP.matrix -> unit
      val eye : int -> int -> Nla.BLOP.matrix
      val matrix : Nla.BLOP.t array array -> Nla.BLOP.matrix
      type range = Range of int * int | All
      val ( $ ) :
        Nla.BLOP.matrix -> Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix
      val ( <-> ) : int -> int -> Nla.BLOP.range
      val partition2x1 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x2 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition2x2 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x1 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x3 :
        int ->
        int ->
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partitionInfx1 :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partition1xInf :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partitionNx1 :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val partition1xN :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val ooo : Nla.BLOP.matrix -> unit
      val matrix2x1 :
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix3x1 :
        int ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x2 :
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x3 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix4x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrixInfx1 :
        int list -> Nla.BLOP.transformer list -> Nla.BLOP.matrix -> unit
      val copy : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val iD : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( $=> ) :
        Nla.BLOP.matrix ->
        Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix -> unit
      val ( <-| ) : Nla.BLOP.matrix -> Nla.BLOP.transformer -> unit
      val ( <-$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |+| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |-| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |++| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |--| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( +$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( -$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp' : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val conjg' : Nla.BLOP.matrix -> unit
      val ( |*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( *$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *$~ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( |*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val norm1 : Nla.BLOP.matrix -> float
      val normInf : Nla.BLOP.matrix -> float
      val normF : Nla.BLOP.matrix -> float
      val normMax : Nla.BLOP.matrix -> float
      val lq' : Nla.BLOP.matrix -> Nla.BLOP.factor * Nla.BLOP.transform
      val ql' : Nla.BLOP.matrix -> Nla.BLOP.transform * Nla.BLOP.factor
      val copyL : Nla.BLOP.factor -> Nla.BLOP.matrix
      val iDL : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( @* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( @~* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( *@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val ( *~@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val subs' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val subsT' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( |/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( /$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( /~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val scale' : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val rowScale' :
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale' :
        Nla.BLOP.matrix ->
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val scale_real' : float -> Nla.BLOP.matrix -> unit
      val rowScale_real' :
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale_real' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val svd' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val svdL' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val svdR' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val singValues' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val cond : Nla.BLOP.matrix -> float
    end
  module CBlop :
    sig
      type t = Complex.t
      and precision_elt = Bigarray.complex32_elt
      and precision_elt_real = Bigarray.float32_elt
      val precision : (Nla.BLOP.t, Nla.BLOP.precision_elt) Bigarray.kind
      val precision_real : (float, Nla.BLOP.precision_elt_real) Bigarray.kind
      val machine_epsilon : float
      val re : Nla.BLOP.t -> float
      val im : Nla.BLOP.t -> float
      val conjugate : Nla.BLOP.t -> Nla.BLOP.t
      val zero : Nla.BLOP.t
      val one : Nla.BLOP.t
      val minus_one : Nla.BLOP.t
      val fromInt : int -> Nla.BLOP.t
      val toInt : Nla.BLOP.t -> int
      val fromFloat : float -> Nla.BLOP.t
      val randn : unit -> Nla.BLOP.t
      val printfn : Nla.BLOP.t -> unit
      val addn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val subn : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val muln : Nla.BLOP.t -> Nla.BLOP.t -> Nla.BLOP.t
      val mulr : float -> Nla.BLOP.t -> Nla.BLOP.t
      type matrix
      and transformer = Nla.BLOP.matrix -> unit
      and transform
      and factor
      val ( $@ ) : Nla.BLOP.matrix -> int * int -> Nla.BLOP.t
      val ( => ) : Nla.BLOP.t -> int * int -> Nla.BLOP.matrix -> unit
      val noOfRows : Nla.BLOP.matrix -> int
      val noOfCols : Nla.BLOP.matrix -> int
      val printMatrixHeight : int Pervasives.ref
      val printMatrixWidth : int Pervasives.ref
      val printMatrix : Nla.BLOP.matrix -> unit
      val rawMatrix : int -> int -> Nla.BLOP.matrix
      val consts : Nla.BLOP.t -> int -> int -> Nla.BLOP.matrix
      val const : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val zeros : int -> int -> Nla.BLOP.matrix
      val ones : int -> int -> Nla.BLOP.matrix
      val randomMatrix : int -> int -> Nla.BLOP.matrix
      val fun2mat :
        (int -> int -> Nla.BLOP.t) -> int -> int -> Nla.BLOP.matrix
      val fun2mat' : (int -> int -> Nla.BLOP.t) -> Nla.BLOP.matrix -> unit
      val eye : int -> int -> Nla.BLOP.matrix
      val matrix : Nla.BLOP.t array array -> Nla.BLOP.matrix
      type range = Range of int * int | All
      val ( $ ) :
        Nla.BLOP.matrix -> Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix
      val ( <-> ) : int -> int -> Nla.BLOP.range
      val partition2x1 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x2 :
        int -> int -> Nla.BLOP.matrix -> Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition2x2 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x1 :
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partition3x3 :
        int ->
        int ->
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix *
        Nla.BLOP.matrix * Nla.BLOP.matrix * Nla.BLOP.matrix
      val partitionInfx1 :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partition1xInf :
        int list -> Nla.BLOP.matrix -> Nla.BLOP.matrix list
      val partitionNx1 :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val partition1xN :
        int array -> Nla.BLOP.matrix -> Nla.BLOP.matrix array
      val ooo : Nla.BLOP.matrix -> unit
      val matrix2x1 :
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix3x1 :
        int ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        int -> Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x2 :
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix1x3 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix2x3 :
        int ->
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrix4x2 :
        int ->
        int ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer ->
        int ->
        Nla.BLOP.transformer ->
        Nla.BLOP.transformer -> Nla.BLOP.matrix -> unit
      val matrixInfx1 :
        int list -> Nla.BLOP.transformer list -> Nla.BLOP.matrix -> unit
      val copy : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val iD : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( $=> ) :
        Nla.BLOP.matrix ->
        Nla.BLOP.range * Nla.BLOP.range -> Nla.BLOP.matrix -> unit
      val ( <-| ) : Nla.BLOP.matrix -> Nla.BLOP.transformer -> unit
      val ( <-$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |+| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |-| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |++| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |--| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( +$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( -$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp : Nla.BLOP.matrix -> Nla.BLOP.matrix
      val transp' : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val conjg' : Nla.BLOP.matrix -> unit
      val ( |*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( *$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( *$~ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( |*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |*~--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*++| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~*--| ) :
        Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val norm1 : Nla.BLOP.matrix -> float
      val normInf : Nla.BLOP.matrix -> float
      val normF : Nla.BLOP.matrix -> float
      val normMax : Nla.BLOP.matrix -> float
      val lq' : Nla.BLOP.matrix -> Nla.BLOP.factor * Nla.BLOP.transform
      val ql' : Nla.BLOP.matrix -> Nla.BLOP.transform * Nla.BLOP.factor
      val copyL : Nla.BLOP.factor -> Nla.BLOP.matrix
      val iDL : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( @* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( @~* ) : Nla.BLOP.transform -> Nla.BLOP.matrix -> unit
      val ( *@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val ( *~@ ) : Nla.BLOP.matrix -> Nla.BLOP.transform -> unit
      val subs' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val subsT' : Nla.BLOP.factor -> Nla.BLOP.matrix -> unit
      val ( |/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( |~/| ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> unit
      val ( /$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val ( /~$ ) : Nla.BLOP.matrix -> Nla.BLOP.matrix -> Nla.BLOP.matrix
      val scale' : Nla.BLOP.t -> Nla.BLOP.matrix -> unit
      val rowScale' :
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale' :
        Nla.BLOP.matrix ->
        (Nla.BLOP.t, Nla.BLOP.precision_elt, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val scale_real' : float -> Nla.BLOP.matrix -> unit
      val rowScale_real' :
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> Nla.BLOP.matrix -> unit
      val colScale_real' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t -> unit
      val svd' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val svdL' :
        Nla.BLOP.matrix ->
        Nla.BLOP.matrix *
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val svdR' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t * Nla.BLOP.matrix
      val singValues' :
        Nla.BLOP.matrix ->
        (float, Nla.BLOP.precision_elt_real, Bigarray.fortran_layout)
        Bigarray.Array1.t
      val cond : Nla.BLOP.matrix -> float
    end
end