module Mat:sig
..end
typet =
Lacaml__S.mat
typeunop =
?m:int ->
?n:int ->
?br:int ->
?bc:int ->
?b:Lacaml__S.mat -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> Lacaml__S.mat
typebinop =
?m:int ->
?n:int ->
?cr:int ->
?cc:int ->
?c:Lacaml__S.mat ->
?ar:int ->
?ac:int ->
Lacaml__S.mat -> ?br:int -> ?bc:int -> Lacaml__S.mat -> Lacaml__S.mat
val hilbert : int -> Lacaml__S.mat
hilbert n
n
xn
Hilbert matrix.val hankel : int -> Lacaml__S.mat
hankel n
n
xn
Hankel matrix.val pascal : int -> Lacaml__S.mat
pascal n
n
xn
Pascal matrix.val rosser : unit -> Lacaml__S.mat
rosser n
val toeplitz : Lacaml__S.vec -> Lacaml__S.mat
toeplitz v
Invalid_argument
if the length of v
is not an odd number.v
.
The constant diagonals are read from left to right from v
.val vandermonde : Lacaml__S.vec -> Lacaml__S.mat
vandermonde v
v
.val wilkinson : int -> Lacaml__S.mat
wilkinson n
Invalid_argument
if n
is not an odd number >= 3.n
xn
Wilkinson matrix.val random : ?rnd_state:Stdlib.Random.State.t ->
?from:float -> ?range:float -> int -> int -> Lacaml__S.mat
random ?rnd_state ?from ?range m n
m
xn
matrix
initialized with random elements sampled uniformly from range
starting at from
. A random state rnd_state
can be passed.rnd_state
: default = Random.get_state ()from
: default = -1.0range
: default = 2.0val abs : unop
abs ?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 : unop
signum ?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 : unop
sqr ?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 : unop
sqrt ?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 : unop
cbrt ?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 : unop
exp ?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 : unop
exp2 ?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 : unop
expm1 ?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 : unop
log ?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 : unop
log10 ?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 : unop
log2 ?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 : unop
log1p ?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 : unop
sin ?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 : unop
cos ?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 : unop
tan ?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 : unop
asin ?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 : unop
acos ?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 : unop
atan ?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 : unop
sinh ?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 : unop
cosh ?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 : unop
tanh ?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 : unop
asinh ?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 : unop
acosh ?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 : unop
atanh ?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 : unop
floor ?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 : unop
ceil ?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 : unop
round ?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 : unop
trunc ?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 : unop
erf ?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 : unop
erfc ?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 : unop
logistic ?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 : unop
relu ?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 : unop
softplus ?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 : unop
softsign ?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 : binop
pow ?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 : binop
atan2 ?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 : binop
hypot ?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 : binop
min2 ?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 : binop
max2 ?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 ->
Lacaml__S.mat ->
?ar:int ->
?ac:int -> Lacaml__S.mat -> ?br:int -> ?bc:int -> Lacaml__S.mat -> unit
cpab ?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
.
m
: default = number of rows of a
n
: default = number of columns of a
cr
: default = 1cc
: default = 1ar
: default = 1ac
: default = 1br
: default = 1bc
: default = 1val cmab : ?m:int ->
?n:int ->
?cr:int ->
?cc:int ->
Lacaml__S.mat ->
?ar:int ->
?ac:int -> Lacaml__S.mat -> ?br:int -> ?bc:int -> Lacaml__S.mat -> unit
cmab ?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
.
m
: default = number of rows of a
n
: default = number of columns of a
cr
: default = 1cc
: default = 1ar
: default = 1ac
: default = 1br
: default = 1bc
: default = 1val log_sum_exp : ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> float
log_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 -> Lacaml__S.mat
create m n
m
rows and n
columns.val make : int -> int -> float -> Lacaml__S.mat
make m n x
m
rows and n
columns
initialized with value x
.val make0 : int -> int -> Lacaml__S.mat
make0 m n x
m
rows and n
columns
initialized with the zero element.val of_array : float array array -> Lacaml__S.mat
of_array ar
ar
. It is assumed that the OCaml matrix is in row major order
(standard).val to_array : Lacaml__S.mat -> float array array
to_array mat
mat
.val of_list : float list list -> Lacaml__S.mat
of_list ls
ls
. Each sublist of ls
represents a row of the desired matrix,
and must be of the same length.val to_list : Lacaml__S.mat -> float list list
to_array mat
mat
in row major order as lists.val of_col_vecs : Lacaml__S.vec array -> Lacaml__S.mat
of_col_vecs ar
ar
. The vectors must be of same length.val to_col_vecs : Lacaml__S.mat -> Lacaml__S.vec array
to_col_vecs mat
mat
.val of_col_vecs_list : Lacaml__S.vec list -> Lacaml__S.mat
of_col_vecs_list ar
ar
. The vectors must be of same length.val to_col_vecs_list : Lacaml__S.mat -> Lacaml__S.vec list
to_col_vecs_list mat
mat
.val as_vec : Lacaml__S.mat -> Lacaml__S.vec
as_vec mat
val init_rows : int -> int -> (int -> int -> float) -> Lacaml__S.mat
init_cols m n f
m
rows and n
columns, where each element at row
and col
is initialized by the
result of calling f row col
. The elements are passed row-wise.val init_cols : int -> int -> (int -> int -> float) -> Lacaml__S.mat
init_cols m n f
m
rows and n
columns, where each element at row
and col
is initialized by the
result of calling f row col
. The elements are passed column-wise.val create_mvec : int -> Lacaml__S.mat
create_mvec m
m
rows.val make_mvec : int -> float -> Lacaml__S.mat
make_mvec m x
m
rows
initialized with value x
.val mvec_of_array : float array -> Lacaml__S.mat
mvec_of_array ar
ar
.val mvec_to_array : Lacaml__S.mat -> float array
mvec_to_array mat
mat
.val from_col_vec : Lacaml__S.vec -> Lacaml__S.mat
from_col_vec v
v
.
The data is shared.val from_row_vec : Lacaml__S.vec -> Lacaml__S.mat
from_row_vec v
v
.
The data is shared.val empty : Lacaml__S.mat
empty
, the empty matrix.
val identity : int -> Lacaml__S.mat
identity n
n
xn
identity matrix.val of_diag : ?n:int ->
?br:int ->
?bc:int ->
?b:Lacaml__S.mat -> ?ofsx:int -> ?incx:int -> Lacaml__S.vec -> Lacaml__S.mat
of_diag ?n ?br ?bc ?b ?ofsx ?incx x
b
with diagonal
elements in the designated sub-matrix coming from the designated sub-vector
in x
.n
: default = greater n
s.t. ofsx+(n-1)(abs incx) <= dim x
br
: default = 1
bc
: default = 1
b
: default = minimal fresh matrix consistent with n
, br
, and bc
ofsx
: default = 1incx
: default = 1val dim1 : Lacaml__S.mat -> int
dim1 m
m
(number of rows).val dim2 : Lacaml__S.mat -> int
dim2 m
m
(number of columns).val has_zero_dim : Lacaml__S.mat -> bool
has_zero_dim mat
checks whether matrix mat
has a dimension of size
zero
. In this case it cannot contain data.
val col : Lacaml__S.mat -> int -> Lacaml__S.vec
col m n
n
th column of matrix m
as a vector.
The data is shared.val copy_row : ?vec:Lacaml__S.vec -> Lacaml__S.mat -> int -> Lacaml__S.vec
copy_row ?vec mat int
n
th row of matrix m
in vector vec
.vec
: default = fresh vector of length dim2 mat
val swap : ?uplo:[ `L | `U ] ->
?m:int ->
?n:int ->
?ar:int ->
?ac:int -> Lacaml__S.mat -> ?br:int -> ?bc:int -> Lacaml__S.mat -> unit
swap ?m ?n ?ar ?ac a ?br ?bc b
swaps the contents of (sub-matrices)
a
and b
.
m
: default = greater n s.t. ar + m - 1 <= dim1 a
n
: default = greater n s.t. ac + n - 1 <= dim2 a
ar
: default = 1
ac
: default = 1
br
: default = 1
bc
: default = 1
val transpose_copy : unop
transpose_copy ?m ?n ?br ?bc ?b ?ar ?ac a
a
. If b
is given, the result will be stored in there
using offsets br
and bc
, otherwise a fresh matrix will be used.
NOTE: this operations does _not_ support in-place transposes!val detri : ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> unit
detri ?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.
up
: default = true
n
: default = Mat.dim1 a
ar
: default = 1
ac
: default = 1
val packed : ?up:bool -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> Lacaml__S.vec
packed ?up ?n ?ar ?ac a
a
in packed
storage format.up
: default = true
n
: default = Mat.dim2 a
ar
: default = 1
ac
: default = 1
val unpacked : ?up:bool -> ?n:int -> Lacaml__S.vec -> Lacaml__S.mat
unpacked ?up x
up
)
triangular matrix from packed representation vec
. The other
triangle of the matrix will be filled with zeros.up
: default = true
n
: default = Vec.dim x
val fill : ?m:int -> ?n:int -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> float -> unit
fill ?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 -> Lacaml__S.mat -> float
sum ?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 -> unop
add_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 : unop
neg ?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 : unop
reci ?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.
val copy_diag : ?n:int ->
?ofsy:int ->
?incy:int ->
?y:Lacaml__S.vec -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> Lacaml__S.vec
copy_diag ?n ?ofsy ?incy ?y ?ar ?ac a
a
in a (sub-)vector.n
: default = greatest n
that does not exceed matrix dimensionsofsy
: default = 1incy
: default = 1y
: default = fresh vector of length n
ar
: default = 1ac
: default = 1val trace : Lacaml__S.mat -> float
trace m
m
. If m
is not a
square matrix, the sum of the longest possible sequence of
diagonal elements will be returned.val scal : ?m:int -> ?n:int -> float -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> unit
scal ?m ?n alpha ?ar ?ac a
BLAS scal
function for (sub-)matrices.
val scal_cols : ?m:int ->
?n:int ->
?ar:int -> ?ac:int -> Lacaml__S.mat -> ?ofs:int -> Lacaml__S.vec -> unit
scal_cols ?m ?n ?ar ?ac a ?ofs alphas
column-wise scal
function for matrices.
val scal_rows : ?m:int ->
?n:int ->
?ofs:int -> Lacaml__S.vec -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> unit
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 -> Lacaml__S.mat -> float
syrk_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.
n
: default = number of rows of a
k
: default = number of columns of a
ar
: default = 1
ac
: default = 1
val syrk_diag : ?n:int ->
?k:int ->
?beta:float ->
?ofsy:int ->
?y:Lacaml__S.vec ->
?trans:Lacaml__common.trans2 ->
?alpha:float -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> Lacaml__S.vec
syrk_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.
n
: default = number of rows of a
(or tra
)k
: default = number of columns of a
(or tra
)beta
: default = 0
ofsy
: default = 1
y
: default = fresh vector of size n + ofsy - 1
trans
: default = `N
alpha
: default = 1
ar
: default = 1
ac
: default = 1
val add : binop
add ?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 : binop
sub ?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 : binop
mul ?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 : binop
div ?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 -> Lacaml__S.mat -> ?yr:int -> ?yc:int -> Lacaml__S.mat -> unit
axpy ?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:Lacaml__S.vec ->
?transa:Lacaml__S.trans3 ->
?alpha:float ->
?ar:int ->
?ac:int ->
Lacaml__S.mat ->
?transb:Lacaml__S.trans3 ->
?br:int -> ?bc:int -> Lacaml__S.mat -> Lacaml__S.vec
gemm_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.
n
: default = number of rows of a
(or tr a
) and
number of columns of b
(or tr b
)k
: default = number of columns of a
(or tr a
) and
number of rows of b
(or tr b
)beta
: default = 0
ofsy
: default = 1
y
: default = fresh vector of size n + ofsy - 1
transa
: default = `N
alpha
: default = 1
ar
: default = 1
ac
: default = 1
transb
: default = `N
br
: default = 1
bc
: default = 1
val gemm_trace : ?n:int ->
?k:int ->
?transa:Lacaml__S.trans3 ->
?ar:int ->
?ac:int ->
Lacaml__S.mat ->
?transb:Lacaml__S.trans3 -> ?br:int -> ?bc:int -> Lacaml__S.mat -> float
gemm_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.
n
: default = number of rows of a
(or tr a
) and
number of columns of b
(or tr b
)k
: default = number of columns of a
(or tr a
) and
number of rows of b
(or tr b
)transa
: default = `N
ar
: default = 1
ac
: default = 1
transb
: default = `N
br
: default = 1
bc
: default = 1
val symm2_trace : ?n:int ->
?upa:bool ->
?ar:int ->
?ac:int ->
Lacaml__S.mat -> ?upb:bool -> ?br:int -> ?bc:int -> Lacaml__S.mat -> float
symm2_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
.
n
: default = dimensions of a
and b
upa
: default = true (upper triangular portion of a
is accessed)ar
: default = 1
ac
: default = 1
upb
: default = true (upper triangular portion of b
is accessed)br
: default = 1
bc
: default = 1
val ssqr_diff : ?m:int ->
?n:int ->
?ar:int ->
?ac:int -> Lacaml__S.mat -> ?br:int -> ?bc:int -> Lacaml__S.mat -> float
ssqr_diff ?m ?n ?ar ?ac a ?br ?bc b
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
.m
: default = greater n s.t. ar + m - 1 <= dim1 a
n
: default = greater n s.t. ac + n - 1 <= dim2 a
ar
: default = 1ac
: default = 1br
: default = 1bc
: default = 1val map : (float -> float) ->
?m:int ->
?n:int ->
?br:int ->
?bc:int ->
?b:Lacaml__S.mat -> ?ar:int -> ?ac:int -> Lacaml__S.mat -> Lacaml__S.mat
map f ?m ?n ?br ?bc ?b ?ar ?ac a
f
applied to each element of a
.m
: default = number of rows of a
n
: default = number of columns of a
b
: default = fresh matrix of size m by nval fold_cols : ('a -> Lacaml__S.vec -> 'a) -> ?n:int -> ?ac:int -> 'a -> Lacaml__S.mat -> 'a
fold_cols f ?n ?ac acc a
n
: default = number of columns of a
ac
: default = 1