Abstract
Library with operations related to
LU-decomposition
of dense matrices, including operations for decomposing a matrix
A
into a lower matrix L
and upper matrix U
such that LU = A
. The module also contains functionality for solving linear
systems based on LU-decomposition using forward- and
back-substitution.
Synopsis
local module type lu = {
| ||||||||||||||||||||
module mk_lu | : | (T: field) -> lu with t = T.t |
Description
- ↑local module type lu
- ↑type t
The scalar type.
- ↑val lu [m]: (block_size: i64) -> (mat: [m][m]t) -> [m][m]t
LU decomposition. The function returns the L and U parts embedded into a single square matrix. The diagonal holds the diagonal of U; the diagonal of L is implicitly the identity. The
block_size
is a tunable parameter (16 and 32 are decent).- ↑val lu2 [m]: (block_size: i64) -> (mat: [m][m]t) -> ([m][m]t, [m][m]t)
LU decomposition. The function returns the L and U parts in different arrays. The
block_size
is a tunable parameter (16 and 32 are decent).- ↑val forsolve [n]: [n][n]t -> [n]t -> [n]t
Forward substitution on lower part of square matrix.
- ↑val backsolve [n]: [n][n]t -> [n]t -> [n]t
Back substitution on upper part of square matrix.
- ↑val ols [n]: (block_size: i64) -> [n][n]t -> [n]t -> [n]t
Solve linear system using LU-decomposition.