module Owl_linalg:sig
..end
Currently, Linalg module only supports dense matrix. The support for sparse
matrices will be provided very soon.
typemat_d =
Owl_dense_matrix_d.mat
typemat_z =
Owl_dense_matrix_z.mat
type('a, 'b)
t =('a, 'b) Owl_dense_matrix_generic.t
val inv : mat_d -> mat_d
P A = L U
where P is a permutation matrix, L is unit
lower triangular matrix and U is upper triangular matrix. For square matrices
this decomposition can be used to convert the linear system A x = b into a
pair of triangular systems (L y = P b, U x = y), which can be solved by
forward and back-substitution. Note that the LU decomposition is valid for
singular matrices.val det : mat_d -> float
det x
computes the determinant of a matrix x
from its LU decomposition.val qr : mat_d -> mat_d * mat_d
qr x
calculates QR decomposition for an m
by n
matrix x
as
x = Q R
. Q
is an m
by m
square matrix (where Q^T Q = I
) and R
is
an m
by n
right-triangular matrix.val qr_sqsolve : mat_d -> mat_d -> mat_d
val qr_lssolve : mat_d -> mat_d -> mat_d * mat_d
val svd : mat_d -> mat_d * mat_d * mat_d
svd x
calculates the singular value decomposition of x
, and returns a
tuple (u,s,v)
. u
is an m
by n
orthogonal matrix, s
an n
by 1
matrix of singular values, and v
is the transpose of an n
by n
orthogonal square matrix.val cholesky : mat_d -> mat_d
val is_posdef : mat_d -> bool
is_posdef x
checks whether x
is a positive semi-definite matrix.val symmtd : mat_d -> mat_d * mat_d * mat_d
val bidiag : mat_d ->
mat_d * mat_d * mat_d * mat_d
val tridiag_solve : mat_d -> mat_d -> mat_d
val symm_tridiag_solve : mat_d -> mat_d -> mat_d
val eigen_symm : mat_d -> mat_d
val eigen_symmv : mat_d -> mat_d * mat_d
val eigen_nonsymm : mat_d -> mat_z
val eigen_nonsymmv : mat_d -> mat_z * mat_z
val eigen_herm : mat_z -> mat_d
val eigen_hermv : mat_z -> mat_d * mat_z