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