package slap
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=e3bdbaad3574e8d7c4521821bf9f0a8f09284af31f16f69184dac65b6657d182
md5=6f237f6812b3f732b311d482528a39a7
doc/slap/Slap_vec/index.html
Module Slap_vec
Slap.Vec provides operations on sized vectors.
('n, 'num, 'prec, 'cnt_or_dsc) vec is the type of 'n-dimensional vector whose elements have OCaml type 'num, representation kind 'prec and memory contiguity flag 'cnt_or_dsc. The internal implementation is fortran-style one-dimensional big array.
val cnt : ('n, 'num, 'prec, Slap_misc.cnt) t -> ('n, 'num, 'prec, 'cnt) tRecover polymorphism of the fourth type parameter.
Creation of vectors
val create :
('num, 'prec) Bigarray.kind ->
'n Slap_size.t ->
('n, 'num, 'prec, 'cnt) tcreate kind n
val make :
('num, 'prec) Bigarray.kind ->
'n Slap_size.t ->
'num ->
('n, 'num, 'prec, 'cnt) tmake kind n a
val init :
('a, 'b) Bigarray.kind ->
'n Slap_size.t ->
(int -> 'a) ->
('n, 'a, 'b, 'cnt) tinit kind n f
Accessors
val kind : ('n, 'num, 'prec, 'cd) t -> ('num, 'prec) Bigarray.kindval dim : ('n, 'num, 'prec, 'cd) t -> 'n Slap_size.tdim x
val get_dyn : ('n, 'num, 'prec, 'cd) t -> int -> 'numget_dyn x i
val set_dyn : ('n, 'num, 'prec, 'cd) t -> int -> 'num -> unitset_dyn x i a assigns a to the i-th element of the vector x.
val unsafe_get : ('n, 'num, 'prec, 'cd) t -> int -> 'numLike Slap_vec.get_dyn, but size checking is not always performed.
val unsafe_set : ('n, 'num, 'prec, 'cd) t -> int -> 'num -> unitLike Slap_vec.set_dyn, but size checking is not always performed.
val replace_dyn : ('n, 'num, 'prec, 'cd) t -> int -> ('num -> 'num) -> unitreplace_dyn v i f is set_dyn v i (f (get_dyn v i)).
Iterators
val map :
('y_num, 'y_prec) Bigarray.kind ->
('x_num -> 'y_num) ->
?y:('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) tmap kind f ?y (x1, ..., xn) is (f x1, ..., f xn).
val mapi :
('y_num, 'y_prec) Bigarray.kind ->
(int -> 'x_num -> 'y_num) ->
?y:('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) tmapi kind f ?y (x1, ..., xn) is (f 1 x1, ..., f n xn) with the vector's dimension n.
val fold_left :
('accum -> 'x_num -> 'accum) ->
'accum ->
('n, 'x_num, 'prec, 'cd) t ->
'accumfold_left f init (x1, x2, ..., xn) is f (... (f (f init x1) x2) ...) xn.
val fold_lefti :
(int -> 'accum -> 'num -> 'accum) ->
'accum ->
('n, 'num, 'prec, 'cd) t ->
'accumfold_lefti f init (x1, x2, ..., xn) is f n (... (f 2 (f 1 init x1) x2) ...) xn with the vector's dimension n.
val fold_right :
('num -> 'accum -> 'accum) ->
('n, 'num, 'prec, 'cd) t ->
'accum ->
'accumfold_right f (x1, x2, ..., xn) init is f x1 (f x2 (... (f xn init) ...)).
val fold_righti :
(int -> 'num -> 'accum -> 'accum) ->
('n, 'num, 'prec, 'cd) t ->
'accum ->
'accumfold_righti f (x1, x2, ..., xn) init is f 1 x1 (f 2 x2 (... (f n xn init) ...)) with the vector's dimension n.
val replace_all : ('n, 'num, 'prec, 'cd) t -> ('num -> 'num) -> unitreplace_all x f modifies the vector x in place -- the i-th element xi of x will be set to f xi.
val replace_alli : ('n, 'num, 'prec, 'cd) t -> (int -> 'num -> 'num) -> unitreplace_alli x f modifies the vector x in place -- the i-th element xi of x will be set to f i xi.
val iter : ('num -> unit) -> ('n, 'num, 'prec, 'cd) t -> unititer f (x1, x2, ..., xn) is f x1; f x2; ...; f xn.
val iteri : (int -> 'num -> unit) -> ('n, 'num, 'prec, 'cd) t -> unititeri f (x1, x2, ..., xn) is f 1 x1; f 2 x2; ...; f n xn.
Iterators on two vectors
val map2 :
('z_num, 'z_prec) Bigarray.kind ->
('x_num -> 'y_num -> 'z_num) ->
?z:('n, 'z_num, 'z_prec, 'z_cd) t ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) tmap2 kind f ?z (x1, x2, ..., xn) (y1, y2, ..., yn) is (f x1 y1, f x2 y2, ..., f xn yn).
val mapi2 :
('z_num, 'z_prec) Bigarray.kind ->
(int -> 'x_num -> 'y_num -> 'z_num) ->
?z:('n, 'z_num, 'z_prec, 'z_cd) t ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) tmapi2 kind f ?z (x1, x2, ..., xn) (y1, y2, ..., yn) is (f 1 x1 y1, f 2 x2 y2, ..., f n xn yn) with the vectors' dimension n.
val fold_left2 :
('accum -> 'x_num -> 'y_num -> 'accum) ->
'accum ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
'accumfold_left2 f init (x1, x2, ..., xn) (y1, y2, ..., yn) is f (... (f (f init x1 y1) x2 y2) ...) xn yn.
val fold_lefti2 :
(int -> 'accum -> 'x_num -> 'y_num -> 'accum) ->
'accum ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
'accumfold_lefti2 f init (x1, x2, ..., xn) (y1, y2, ..., yn) is f n (... (f 2 (f 1 init x1 y1) x2 y2) ...) xn yn with the vectors' dimension n.
val fold_right2 :
('x_num -> 'y_num -> 'accum -> 'accum) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
'accum ->
'accumfold_righti2 f (x1, x2, ..., xn) (y1, y2, ..., yn) init is f x1 y1 (f x2 y2 (... (f xn yn init) ...)).
val fold_righti2 :
(int -> 'x_num -> 'y_num -> 'accum -> 'accum) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
'accum ->
'accumfold_righti2 f (x1, x2, ..., xn) (y1, y2, ..., yn) init is f 1 x1 y1 (f 2 x2 y2 (... (f n xn yn init) ...)) with the vectors' dimension n.
val iter2 :
('x_num -> 'y_num -> unit) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
unititer2 f (x1, x2, ..., xn) (y1, y2, ..., yn) is f x1 y1; f x2 y2; ...; f xn yn.
val iteri2 :
(int -> 'x_num -> 'y_num -> unit) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
unititeri2 f (x1, x2, ..., xn) (y1, y2, ..., yn) is f 1 x1 y1; f 2 x2 y2; ...; f n xn yn.
Iterators on three vectors
val map3 :
('w_num, 'w_prec) Bigarray.kind ->
('x_num -> 'y_num -> 'z_num -> 'w_num) ->
?w:('n, 'w_num, 'w_prec, 'w_cd) t ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
('n, 'w_num, 'w_prec, 'w_cd) tmap3 kind f ?w (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) is (f x1 y1 z1, f x2 y2 z2, ..., f xn yn zn).
val mapi3 :
('w_num, 'w_prec) Bigarray.kind ->
(int -> 'x_num -> 'y_num -> 'z_num -> 'w_num) ->
?w:('n, 'w_num, 'w_prec, 'w_cd) t ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
('n, 'w_num, 'w_prec, 'w_cd) tmapi3 kind f ?w (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) is (f 1 x1 y1 z1, f 2 x2 y2 z2, ..., f n xn yn zn) with the vectors' dimension n.
val fold_left3 :
('accum -> 'x_num -> 'y_num -> 'z_num -> 'accum) ->
'accum ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
'accumfold_left3 f init (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) is f (... (f (f init x1 y1 z1) x2 y2 z2) ...) xn yn zn.
val fold_lefti3 :
(int -> 'accum -> 'x_num -> 'y_num -> 'z_num -> 'accum) ->
'accum ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
'accumfold_lefti3 f init (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) is f n (... (f 2 (f 1 init x1 y1 z1) x2 y2 z2) ...) xn yn zn with the vectors' dimension n.
val fold_right3 :
('x_num -> 'y_num -> 'z_num -> 'accum -> 'accum) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
'accum ->
'accumfold_right3 f (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) init is f x1 y1 z1 (f x2 y2 z2 (... (f xn yn zn init) ...)).
val fold_righti3 :
(int -> 'x_num -> 'y_num -> 'z_num -> 'accum -> 'accum) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
'accum ->
'accumfold_righti3 f (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) init is f 1 x1 y1 z1 (f 2 x2 y2 z2 (... (f n xn yn zn init) ...)) with the vectors' dimension n.
val iter3 :
('x_num -> 'y_num -> 'z_num -> unit) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
unititer3 f (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) is f x1 y1 z1; f x2 y2 z2; ...; f xn yn zn.
val iteri3 :
(int -> 'x_num -> 'y_num -> 'z_num -> unit) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
('n, 'z_num, 'z_prec, 'z_cd) t ->
unititeri3 f (x1, x2, ..., xn) (y1, y2, ..., yn) (z1, z2, ..., zn) is f 1 x1 y1 z1; f 2 x2 y2 z2; ...; f n xn yn zn.
Scanning
val for_all : ('num -> bool) -> ('n, 'num, 'prec, 'cd) t -> boolfor_all p (x1, x2, ..., xn) is (p x1) && (p x2) && ... && (p xn).
val exists : ('num -> bool) -> ('n, 'num, 'prec, 'cd) t -> boolexists p (x1, x2, ..., xn) is (p x1) || (p x2) || ... || (p xn).
val for_all2 :
('x_num -> 'y_num -> bool) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
boolfor_all2 p (x1, x2, ..., xn) (y1, y2, ..., yn) is (p x1 y1) && (p x2 y2) && ... && (p xn yn).
val exists2 :
('x_num -> 'y_num -> bool) ->
('n, 'x_num, 'x_prec, 'x_cd) t ->
('n, 'y_num, 'y_prec, 'y_cd) t ->
boolexists2 p (x1, x2, ..., xn) (y1, y2, ..., yn) is (p x1 y1) || (p x2 y2) || ... || (p xn yn).
val mem :
?equal:('num -> 'num -> bool) ->
'num ->
('n, 'num, 'prec, 'cd) t ->
boolmem ?equal a v
Basic operations
val copy :
?y:('n, 'num, 'prec, 'y_cd) t ->
('n, 'num, 'prec, 'x_cd) t ->
('n, 'num, 'prec, 'y_cd) tcopy ?y x copies the vector x to the vector y.
val fill : ('n, 'num, 'prec, 'cd) t -> 'num -> unitFill the given vector with the given value.
val append :
('m, 'num, 'prec, 'x_cd) t ->
('n, 'num, 'prec, 'y_cd) t ->
(('m, 'n) Slap_size.add, 'num, 'prec, 'cnt) tConcatenate two vectors.
shared_rev (x1, x2, ..., xn)
Conversion
val to_array : ('n, 'num, 'prec, 'cd) t -> 'num arrayto_array x
val of_array_dyn :
('num, 'prec) Bigarray.kind ->
'n Slap_size.t ->
'num array ->
('n, 'num, 'prec, 'cnt) tof_array_dyn kind n [|a1; ...; an|]
val unsafe_of_array :
('num, 'prec) Bigarray.kind ->
'n Slap_size.t ->
'num array ->
('n, 'num, 'prec, 'cnt) tLike of_array_dyn, but size checking is not always performed.
val to_list : ('n, 'num, 'prec, 'cd) t -> 'num listto_list x
val of_list_dyn :
('num, 'prec) Bigarray.kind ->
'n Slap_size.t ->
'num list ->
('n, 'num, 'prec, 'cnt) tof_list_dyn kind n [a1; ...; an]
val unsafe_of_list :
('num, 'prec) Bigarray.kind ->
'n Slap_size.t ->
'num list ->
('n, 'num, 'prec, 'cnt) tLike of_list_dyn, but size checking is not always performed.
val to_bigarray :
('n, 'num, 'prec, 'cd) t ->
('num, 'prec, Bigarray.fortran_layout) Bigarray.Array1.tto_bigarray x
val of_bigarray_dyn :
?share:bool ->
'n Slap_size.t ->
('num, 'prec, Bigarray.fortran_layout) Bigarray.Array1.t ->
('n, 'num, 'prec, 'cnt) tof_bigarray_dyn ?share n ba
val unsafe_of_bigarray :
?share:bool ->
'n Slap_size.t ->
('num, 'prec, Bigarray.fortran_layout) Bigarray.Array1.t ->
('n, 'num, 'prec, 'cnt) tLike unsafe_of_bigarray, but size checking is not always performed.
Subvectors
val subcntvec_dyn :
'm Slap_size.t ->
?ofsx:int ->
('n, 'num, 'prec, Slap_misc.cnt) t ->
('m, 'num, 'prec, 'cnt) tsubcntvec_dyn m ?ofsx x
val subdscvec_dyn :
'm Slap_size.t ->
?ofsx:int ->
?incx:int ->
('n, 'num, 'prec, 'cd) t ->
('m, 'num, 'prec, Slap_misc.dsc) tsubdscvec_dyn m ?ofsx ?incx x
val subvec_dyn :
'm Slap_size.t ->
?ofsx:int ->
?incx:int ->
('n, 'num, 'prec, 'cd) t ->
('m, 'num, 'prec, Slap_misc.dsc) tAn alias of subdscvec_dyn.