Module Mat.Float
Float
allows to manipulate float-valued matrices
type 'a k
= 'a
type 'a m
= 'a
type base_index
= Linalg.Tensor.Int.pos
type 'a shape
= 'a Linalg.Tensor.Int.t
type index
:= base_index * base_index
include Linalg.Intf.Vec with type 'a k := 'a k and type 'a m := 'a m and type 'a shape := 'a shape
type 'i t
= ('i shape, 'i m, elt m) Linalg.Intf.vec
type 'i out
= ('i shape, 'i m, elt m, unit m) Linalg.Intf.ovec
val make : 'i shape -> ('i m -> elt m) -> 'i t
Creates an input vector from a dimension and a function.
val get : 'i t -> 'i m -> elt m k
Get an elemement of an input vector.
- raises Out_of_bounds
if given index is not in the domain of the vector.
val unsafe_get : 'i t -> 'i m -> elt m
Get an elemement of an input vector. Does not perform bound checking.
val set : 'i out -> 'i m -> elt m -> unit m k
Set an elemement in an output vector.
- raises Out_of_bounds
if given index is not in the domain of the vector.
val map : ('a m -> 'b m) -> ('i shape, 'i m, 'a m) Linalg.Intf.vec -> ('i shape, 'i m, 'b m) Linalg.Intf.vec
val mapi : ('i m -> 'a m -> 'b m) -> ('i shape, 'i m, 'a m) Linalg.Intf.vec -> ('i shape, 'i m, 'b m) Linalg.Intf.vec
val map2 : ('a m -> 'b m -> 'c m) -> ('i shape, 'i m, 'a m) Linalg.Intf.vec -> ('i shape, 'i m, 'b m) Linalg.Intf.vec -> ('i shape, 'i m, 'c m) Linalg.Intf.vec k
val map2i : ('i m -> 'a m -> 'b m -> 'c m) -> ('i shape, 'i m, 'a m) Linalg.Intf.vec -> ('i shape, 'i m, 'b m) Linalg.Intf.vec -> ('i shape, 'i m, 'c m) Linalg.Intf.vec k
val assign : ('i shape, 'i m, 'a m, unit m) Linalg.Intf.ovec -> ('i shape, 'i m, 'a m) Linalg.Intf.vec -> ('i shape, 'i m, unit m) Linalg.Intf.vec k
val zero : 'i shape -> 'i t
Everywhere zero vector.
val basis : 'i shape -> 'i m -> elt m -> 'i t k
basis s i r
is the vector of shapes
everywhere equal to R.zero except at indexi
where it is equal tor
. RaisesOut_of_bounds
ifi
does not belong tos
.
val add : 'i t -> 'i t -> 'i t k
Pointwise addition. Raises
Dimensions_mismatch
if the shape of operands are not equal.
val sub : 'i t -> 'i t -> 'i t k
Pointwise subtraction. Raises
Dimensions_mismatch
if the shape of operands are not equal.
val mul : 'i t -> 'i t -> 'i t k
Pointwise multiplication. Raises
Dimensions_mismatch
if the shape of operands are not equal.
val swap : 'i m -> 'i m -> 'i t -> 'i t k
Swapping of indices. Raises
Out_of_bounds
if given indices are invalid.
val iter : ('i shape, 'i m, unit m) Linalg.Intf.vec -> unit m
iter v
iterates the effectful computation at each index
val reduce : (elt m -> elt m -> elt m) -> elt m -> ('i shape, 'i m, elt m) Linalg.Intf.vec -> elt m
reduce op zero v
folds the binary, associative operatorop
over the elements ofv
with initial valuezero
. Fold ordering is implementation-dependent: consider using commutative operators.
val (:=) : ('i shape, 'i m, 'a m, unit m) Linalg.Intf.ovec -> ('i shape, 'i m, 'a m) Linalg.Intf.vec -> unit m k
Vector assignement.
- raises Dimensions_mismatch
if the size of operands are not equal.
val add_ : 'i out -> 'i t -> 'i t -> unit m k
Pointwise addition, stores result in first operand.
- raises Dimensions_mismatch
if the size of operands are not equal.
val sub_ : 'i out -> 'i t -> 'i t -> unit m k
Pointwise subtraction, stores result in first operand.
- raises Dimensions_mismatch
if the size of operands are not equal.
val mul_ : 'i out -> 'i t -> 'i t -> unit m k
Pointwise multiplication, stores result in first operand.
- raises Dimensions_mismatch
if the size of operands are not equal.
val dot : 'i t -> 'i t -> elt m k
Dot product.
- raises Dimensions_mismatch
if the size of operands are not equal.
module Infix : sig ... end
val index : c:base_index m -> r:base_index m -> index m
Indexing
val cols : index t -> base_index shape
cols m
returns the shape of the columns ofm
.
val rows : index t -> base_index shape
rows m
returns the shape of the rows ofm
val identity : base_index shape -> index t
Identity matrix
val diagonal : (base_index shape, base_index m, elt m) Linalg.Intf.vec -> index t
Square matrix with given vector on diagonal
val col : index t -> base_index m -> (base_index shape, base_index m, elt m) Linalg.Intf.vec k
Get a column.
- raises Out_of_bounds
if given indices are invalid.
val of_col : (base_index shape, base_index m, elt m) Linalg.Intf.vec -> index t
Convert a vector into a matrix with this vector as single column.
val row : index t -> base_index m -> (base_index shape, base_index m, elt m) Linalg.Intf.vec k
Get a row.
- raises Out_of_bounds
if given indices are invalid.
val of_row : (base_index shape, base_index m, elt m) Linalg.Intf.vec -> index t
Convert a vector into a matrix with this vector as single row.
val swap_rows : index t -> base_index m -> base_index m -> index t k
Swap two rows.
- raises Out_of_bounds
if given indices are invalid.
val swap_cols : index t -> base_index m -> base_index m -> index t k
Swap two columns.
- raises Out_of_bounds
if given indices are invalid.
val concat_horiz : index t -> index t -> index t k
Concatenate two matrices horizontally, provided they have the same number of rows.
- raises Dimensions_mismatch
if this condition is not verified.