sig   type spmat   val zeros : int -> int -> Owl_sparse_real.spmat   val ones : int -> int -> Owl_sparse_real.spmat   val eye : int -> Owl_sparse_real.spmat   val binary : int -> int -> Owl_sparse_real.spmat   val uniform : ?scale:float -> int -> int -> Owl_sparse_real.spmat   val uniform_int : ?a:int -> ?b:int -> int -> int -> Owl_sparse_real.spmat   val linspace : float -> float -> int -> Owl_sparse_real.spmat   val shape : Owl_sparse_real.spmat -> int * int   val row_num : Owl_sparse_real.spmat -> int   val col_num : Owl_sparse_real.spmat -> int   val row_num_nz : Owl_sparse_real.spmat -> int   val col_num_nz : Owl_sparse_real.spmat -> int   val numel : Owl_sparse_real.spmat -> int   val nnz : Owl_sparse_real.spmat -> int   val nnz_rows : Owl_sparse_real.spmat -> int array   val nnz_cols : Owl_sparse_real.spmat -> int array   val density : Owl_sparse_real.spmat -> float   val get : Owl_sparse_real.spmat -> int -> int -> float   val set : Owl_sparse_real.spmat -> int -> int -> float -> unit   val reset : Owl_sparse_real.spmat -> unit   val clone : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val transpose : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val diag : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val trace : Owl_sparse_real.spmat -> float   val row : Owl_sparse_real.spmat -> int -> Owl_sparse_real.spmat   val col : Owl_sparse_real.spmat -> int -> Owl_sparse_real.spmat   val rows : Owl_sparse_real.spmat -> int array -> Owl_sparse_real.spmat   val cols : Owl_sparse_real.spmat -> int array -> Owl_sparse_real.spmat   val iteri : (int -> int -> float -> unit) -> Owl_sparse_real.spmat -> unit   val iter : (float -> unit) -> Owl_sparse_real.spmat -> unit   val mapi :     (int -> int -> float -> float) ->     Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val map :     (float -> float) -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val fold : ('-> float -> 'a) -> '-> Owl_sparse_real.spmat -> 'a   val filteri :     (int -> int -> float -> bool) ->     Owl_sparse_real.spmat -> (int * int) array   val filter : (float -> bool) -> Owl_sparse_real.spmat -> (int * int) array   val iteri_rows :     (int -> Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val iter_rows :     (Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val iteri_cols :     (int -> Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val iter_cols :     (Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val mapi_rows :     (int -> Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val map_rows :     (Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val mapi_cols :     (int -> Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val map_cols :     (Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val fold_rows :     ('-> Owl_sparse_real.spmat -> 'a) -> '-> Owl_sparse_real.spmat -> 'a   val fold_cols :     ('-> Owl_sparse_real.spmat -> 'a) -> '-> Owl_sparse_real.spmat -> 'a   val iteri_nz :     (int -> int -> float -> unit) -> Owl_sparse_real.spmat -> unit   val iter_nz : (float -> unit) -> Owl_sparse_real.spmat -> unit   val mapi_nz :     (int -> int -> float -> float) ->     Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val map_nz :     (float -> float) -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val fold_nz : ('-> float -> 'a) -> '-> Owl_sparse_real.spmat -> 'a   val filteri_nz :     (int -> int -> float -> bool) ->     Owl_sparse_real.spmat -> (int * int) array   val filter_nz :     (float -> bool) -> Owl_sparse_real.spmat -> (int * int) array   val iteri_rows_nz :     (int -> Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val iter_rows_nz :     (Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val iteri_cols_nz :     (int -> Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val iter_cols_nz :     (Owl_sparse_real.spmat -> unit) -> Owl_sparse_real.spmat -> unit   val mapi_rows_nz :     (int -> Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val map_rows_nz :     (Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val mapi_cols_nz :     (int -> Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val map_cols_nz :     (Owl_sparse_real.spmat -> 'a) -> Owl_sparse_real.spmat -> 'a array   val fold_rows_nz :     ('-> Owl_sparse_real.spmat -> 'a) -> '-> Owl_sparse_real.spmat -> 'a   val fold_cols_nz :     ('-> Owl_sparse_real.spmat -> 'a) -> '-> Owl_sparse_real.spmat -> 'a   val exists : (float -> bool) -> Owl_sparse_real.spmat -> bool   val not_exists : (float -> bool) -> Owl_sparse_real.spmat -> bool   val for_all : (float -> bool) -> Owl_sparse_real.spmat -> bool   val exists_nz : (float -> bool) -> Owl_sparse_real.spmat -> bool   val not_exists_nz : (float -> bool) -> Owl_sparse_real.spmat -> bool   val for_all_nz : (float -> bool) -> Owl_sparse_real.spmat -> bool   val mul_scalar : Owl_sparse_real.spmat -> float -> Owl_sparse_real.spmat   val div_scalar : Owl_sparse_real.spmat -> float -> Owl_sparse_real.spmat   val add :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val sub :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val mul :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val div :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val dot :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val abs : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val neg : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val sum : Owl_sparse_real.spmat -> float   val average : Owl_sparse_real.spmat -> float   val power : Owl_sparse_real.spmat -> float -> Owl_sparse_real.spmat   val is_zero : Owl_sparse_real.spmat -> bool   val is_positive : Owl_sparse_real.spmat -> bool   val is_negative : Owl_sparse_real.spmat -> bool   val is_nonnegative : Owl_sparse_real.spmat -> bool   val min : Owl_sparse_real.spmat -> float   val max : Owl_sparse_real.spmat -> float   val minmax : Owl_sparse_real.spmat -> float * float   val sum_rows : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val sum_cols : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val average_rows : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val average_cols : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val is_equal : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val is_unequal : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val is_greater : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val is_smaller : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val equal_or_greater :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val equal_or_smaller :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val permutation_matrix : int -> Owl_sparse_real.spmat   val draw_rows :     ?replacement:bool ->     Owl_sparse_real.spmat -> int -> Owl_sparse_real.spmat * int array   val draw_cols :     ?replacement:bool ->     Owl_sparse_real.spmat -> int -> Owl_sparse_real.spmat * int array   val shuffle_rows : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val shuffle_cols : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val shuffle : Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val to_dense : Owl_sparse_real.spmat -> Owl_dense_real.mat   val of_dense : Owl_dense_real.mat -> Owl_sparse_real.spmat   val print : Owl_sparse_real.spmat -> unit   val pp_spmat : Owl_sparse_real.spmat -> unit   val save : Owl_sparse_real.spmat -> string -> unit   val load : string -> Owl_sparse_real.spmat   val ( +@ ) :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( -@ ) :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( *@ ) :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( /@ ) :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( $@ ) :     Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( **@ ) : Owl_sparse_real.spmat -> float -> Owl_sparse_real.spmat   val ( *$ ) : Owl_sparse_real.spmat -> float -> Owl_sparse_real.spmat   val ( /$ ) : Owl_sparse_real.spmat -> float -> Owl_sparse_real.spmat   val ( $* ) : float -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( $/ ) : float -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat   val ( =@ ) : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val ( >@ ) : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val ( <@ ) : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val ( <>@ ) : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val ( >=@ ) : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val ( <=@ ) : Owl_sparse_real.spmat -> Owl_sparse_real.spmat -> bool   val ( @@ ) :     (float -> float) -> Owl_sparse_real.spmat -> Owl_sparse_real.spmat end