Page
Library
Module
Module type
Parameter
Class
Class type
Source
S.Mattype t = matval hilbert : int -> mathilbert n
val hankel : int -> mathankel n
val pascal : int -> matpascal n
val rosser : unit -> matrosser n
val wilkinson : int -> matwilkinson n
val random :
?rnd_state:Random.State.t ->
?from:float ->
?range:float ->
int ->
int ->
matrandom ?rnd_state ?from ?range m n
val abs : unopabs ?m ?n ?br ?bc ?b ?ar ?ac a computes the absolute value of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val signum : unopsignum ?m ?n ?br ?bc ?b ?ar ?ac a computes the sign value (-1 for negative numbers, 0 (or -0) for zero, 1 for positive numbers, nan for nan) of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val sqr : unopsqr ?m ?n ?br ?bc ?b ?ar ?ac a computes the square of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val sqrt : unopsqrt ?m ?n ?br ?bc ?b ?ar ?ac a computes the square root of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val cbrt : unopcbrt ?m ?n ?br ?bc ?b ?ar ?ac a computes the cubic root of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val exp : unopexp ?m ?n ?br ?bc ?b ?ar ?ac a computes the exponential of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val exp2 : unopexp2 ?m ?n ?br ?bc ?b ?ar ?ac a computes the base-2 exponential of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val expm1 : unopexpm1 ?m ?n ?br ?bc ?b ?ar ?ac a computes exp a -. 1. of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val log : unoplog ?m ?n ?br ?bc ?b ?ar ?ac a computes the logarithm of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val log10 : unoplog10 ?m ?n ?br ?bc ?b ?ar ?ac a computes the base-10 logarithm of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val log2 : unoplog2 ?m ?n ?br ?bc ?b ?ar ?ac a computes base-2 logarithm of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val log1p : unoplog1p ?m ?n ?br ?bc ?b ?ar ?ac a computes log (1 + a) of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val sin : unopsin ?m ?n ?br ?bc ?b ?ar ?ac a computes the sine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val cos : unopcos ?m ?n ?br ?bc ?b ?ar ?ac a computes the cosine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val tan : unoptan ?m ?n ?br ?bc ?b ?ar ?ac a computes the tangent of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val asin : unopasin ?m ?n ?br ?bc ?b ?ar ?ac a computes the arc sine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val acos : unopacos ?m ?n ?br ?bc ?b ?ar ?ac a computes the arc cosine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val atan : unopatan ?m ?n ?br ?bc ?b ?ar ?ac a computes the arc tangent of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val sinh : unopsinh ?m ?n ?br ?bc ?b ?ar ?ac a computes the hyperbolic sine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val cosh : unopcosh ?m ?n ?br ?bc ?b ?ar ?ac a computes the hyperbolic cosine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val tanh : unoptanh ?m ?n ?br ?bc ?b ?ar ?ac a computes the hyperbolic tangent of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val asinh : unopasinh ?m ?n ?br ?bc ?b ?ar ?ac a computes the hyperbolic arc sine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val acosh : unopacosh ?m ?n ?br ?bc ?b ?ar ?ac a computes the hyperbolic arc cosine of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val atanh : unopatanh ?m ?n ?br ?bc ?b ?ar ?ac a computes the hyperbolic arc tangent of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val floor : unopfloor ?m ?n ?br ?bc ?b ?ar ?ac a computes the floor of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val ceil : unopceil ?m ?n ?br ?bc ?b ?ar ?ac a computes the ceiling of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val round : unopround ?m ?n ?br ?bc ?b ?ar ?ac a rounds the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val trunc : unoptrunc ?m ?n ?br ?bc ?b ?ar ?ac a computes the truncation of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val erf : unoperf ?m ?n ?br ?bc ?b ?ar ?ac a computes the error function of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val erfc : unoperfc ?m ?n ?br ?bc ?b ?ar ?ac a computes the complementary error function of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val logistic : unoplogistic ?m ?n ?br ?bc ?b ?ar ?ac a computes the logistic function 1/(1 + exp(-a) of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val relu : unoprelu ?m ?n ?br ?bc ?b ?ar ?ac a computes the rectified linear unit function max(a, 0) of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val softplus : unopsoftplus ?m ?n ?br ?bc ?b ?ar ?ac a computes the softplus function log(1 + exp(x) of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val softsign : unopsoftsign ?m ?n ?br ?bc ?b ?ar ?ac a computes the softsign function x / (1 + abs(x)) of the elements in the m by n sub-matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val pow : binoppow ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes pow(a, b) for the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val atan2 : binopatan2 ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes atan2(a, b) for the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
NOTE: WARNING! From a geometric point of view, the atan2 function takes the y-coordinate in a and the x-coordinate in b. This confusion is a sad consequence of the C99-standard reversing the argument order for atan2 for no good reason.
val hypot : binophypot ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes sqrt(a*a + b*b) for the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val min2 : binopmin2 ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes the elementwise minimum of the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val max2 : binopmax2 ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes the elementwise maximum of the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val cpab :
?m:int ->
?n:int ->
?cr:int ->
?cc:int ->
mat ->
?ar:int ->
?ac:int ->
mat ->
?br:int ->
?bc:int ->
mat ->
unitcpab ?m ?n ?cr ?cc c ?ar ?ac a ?br ?bc b multiplies designated m-by-n range of elements of matrices a and b elementwise, and adds the result to and stores it in the specified range in c. This function is useful for convolutions. Similar to Vec.zpxy.
val cmab :
?m:int ->
?n:int ->
?cr:int ->
?cc:int ->
mat ->
?ar:int ->
?ac:int ->
mat ->
?br:int ->
?bc:int ->
mat ->
unitcmab ?m ?n ?cr ?cc c ?ar ?ac a ?br ?bc b multiplies designated m-by-n range of elements of matrices a and b elementwise, and subtracts the result from and stores it in the specified range in c. This function is useful for convolutions. Similar to Vec.zmxy.
val log_sum_exp : ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> mat -> floatlog_sum_exp ?m ?n ?ar ?ac a computes the logarithm of the sum of exponentials of all elements in the m-by-n submatrix starting at row ar and column ac.
val create : int -> int -> matcreate m n
val make : int -> int -> float -> matmake m n x
val make0 : int -> int -> matmake0 m n x
val of_array : float array array -> matof_array ar
val to_array : mat -> float array arrayto_array mat
val of_list : float list list -> matof_list ls
val to_list : mat -> float list listto_array mat
val init_rows : int -> int -> (int -> int -> float) -> matinit_cols m n f
val init_cols : int -> int -> (int -> int -> float) -> matinit_cols m n f
val create_mvec : int -> matcreate_mvec m
val make_mvec : int -> float -> matmake_mvec m x
val mvec_of_array : float array -> matmvec_of_array ar
val mvec_to_array : mat -> float arraymvec_to_array mat
val empty : matempty, the empty matrix.
val identity : int -> matidentity n
of_diag ?n ?br ?bc ?b ?ofsx ?incx x
val dim1 : mat -> intdim1 m
val dim2 : mat -> intdim2 m
val has_zero_dim : mat -> boolhas_zero_dim mat checks whether matrix mat has a dimension of size zero. In this case it cannot contain data.
val swap :
?uplo:[ `U | `L ] ->
?m:int ->
?n:int ->
?ar:int ->
?ac:int ->
mat ->
?br:int ->
?bc:int ->
mat ->
unitswap ?m ?n ?ar ?ac a ?br ?bc b swaps the contents of (sub-matrices) a and b.
val transpose_copy : unoptranspose_copy ?m ?n ?br ?bc ?b ?ar ?ac a
val detri : ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> mat -> unitdetri ?up ?n ?ar ?ac a takes a triangular (sub-)matrix a, i.e. one where only the upper (iff up is true) or lower triangle is defined, and makes it a symmetric matrix by mirroring the defined triangle along the diagonal.
val fill : ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> mat -> float -> unitfill ?m ?n ?ar ?ac a x fills the specified sub-matrix in a with value x.
val sum : ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> mat -> floatsum ?m ?n ?ar ?ac a computes the sum of all elements in the m-by-n submatrix starting at row ar and column ac.
val add_const : float -> unopadd_const c ?m ?n ?br ?bc ?b ?ar ?ac a adds constant c to the designated m by n submatrix in a and stores the result in the designated submatrix in b.
val neg : unopneg ?m ?n ?br ?bc ?b ?ar ?ac a computes the negative of the elements in the m by n (sub-)matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val reci : unopreci ?m ?n ?br ?bc ?b ?ar ?ac a computes the reciprocal of the elements in the m by n (sub-)matrix of the matrix a starting in row ar and column ac. If b is given, the result will be stored in there using offsets br and bc, otherwise a fresh matrix will be used. The resulting matrix is returned.
copy_diag ?n ?ofsy ?incy ?y ?ar ?ac a
val trace : mat -> floattrace m
val scal : ?m:int -> ?n:int -> float -> ?ar:int -> ?ac:int -> mat -> unitscal ?m ?n alpha ?ar ?ac a BLAS scal function for (sub-)matrices.
scal_cols ?m ?n ?ar ?ac a ?ofs alphas column-wise scal function for matrices.
scal_rows ?m ?n ?ofs alphas ?ar ?ac a row-wise scal function for matrices.
val syrk_trace : ?n:int -> ?k:int -> ?ar:int -> ?ac:int -> mat -> floatsyrk_trace ?n ?k ?ar ?ac a computes the trace of either a' * a or a * a', whichever is more efficient (results are identical), of the (sub-)matrix a multiplied by its own transpose. This is the same as the square of the Frobenius norm of a matrix. n is the number of rows to consider in a, and k the number of columns to consider.
val syrk_diag :
?n:int ->
?k:int ->
?beta:float ->
?ofsy:int ->
?y:vec ->
?trans:[ `N | `T ] ->
?alpha:float ->
?ar:int ->
?ac:int ->
mat ->
vecsyrk_diag ?n ?k ?beta ?ofsy ?y ?trans ?alpha ?ar ?ac a computes the diagonal of the symmetric rank-k product of the (sub-)matrix a, multiplying it with alpha and adding beta times y, storing the result in y starting at the specified offset. n elements of the diagonal will be computed, and k elements of the matrix will be part of the dot product associated with each diagonal element.
val add : binopadd ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes the sum of the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val sub : binopsub ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes the difference of the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val mul : binopmul ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes the element-wise product of the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
NOTE: please do not confuse this function with matrix multiplication! The LAPACK-function for matrix multiplication is called gemm, e.g. Lacaml.D.gemm.
val div : binopdiv ?m ?n ?cr ?cc ?c ?ar ?ac a ?br ?bc b computes the division of the m by n sub-matrix of the matrix a starting in row ar and column ac with the corresponding sub-matrix of the matrix b starting in row br and column bc. If c is given, the result will be stored in there starting in row cr and column cc, otherwise a fresh matrix will be used. The resulting matrix is returned.
val axpy :
?alpha:float ->
?m:int ->
?n:int ->
?xr:int ->
?xc:int ->
mat ->
?yr:int ->
?yc:int ->
mat ->
unitaxpy ?alpha ?m ?n ?xr ?xc x ?yr ?yc y BLAS axpy function for matrices.
val gemm_diag :
?n:int ->
?k:int ->
?beta:float ->
?ofsy:int ->
?y:vec ->
?transa:trans3 ->
?alpha:float ->
?ar:int ->
?ac:int ->
mat ->
?transb:trans3 ->
?br:int ->
?bc:int ->
mat ->
vecgemm_diag ?n ?k ?beta ?ofsy ?y ?transa ?transb ?alpha ?ar ?ac a ?br ?bc b computes the diagonal of the product of the (sub-)matrices a and b (taking into account potential transposing), multiplying it with alpha and adding beta times y, storing the result in y starting at the specified offset. n elements of the diagonal will be computed, and k elements of the matrices will be part of the dot product associated with each diagonal element.
val gemm_trace :
?n:int ->
?k:int ->
?transa:trans3 ->
?ar:int ->
?ac:int ->
mat ->
?transb:trans3 ->
?br:int ->
?bc:int ->
mat ->
floatgemm_trace ?n ?k ?transa ?ar ?ac a ?transb ?br ?bc b computes the trace of the product of the (sub-)matrices a and b (taking into account potential transposing). When transposing a, this yields the so-called Frobenius product of a and b. n is the number of rows (columns) to consider in a and the number of columns (rows) in b. k is the inner dimension to use for the product.
val symm2_trace :
?n:int ->
?upa:bool ->
?ar:int ->
?ac:int ->
mat ->
?upb:bool ->
?br:int ->
?bc:int ->
mat ->
floatsymm2_trace ?n ?upa ?ar ?ac a ?upb ?br ?bc b computes the trace of the product of the symmetric (sub-)matrices a and b. n is the number of rows and columns to consider in a and b.
ssqr_diff ?m ?n ?ar ?ac a ?br ?bc b