linalg/solve
src/linalg/solve.tur
linear system solvers and matrix inverse/determinant
defn
fwd-sub
(fwd-sub [^borrow l : mat ^borrow b : lavec] :)
solve L x = b where L is lower triangular.
defn
back-sub
(back-sub [^borrow u : mat ^borrow b : lavec] :)
solve U x = b where U is upper triangular.
defn
chol-solve
(chol-solve [^borrow f : cholfac ^borrow b : lavec] :)
solve A x = b given a Cholesky factor (A = L L').
defn
lu-solve
(lu-solve [^borrow f : lufac ^borrow b : lavec] :)
solve A x = b given an LU factor (P A = L U).
defn
qr-solve
(qr-solve [^borrow f : qrfac ^borrow b : lavec] :)
least-squares solve of A x ~= b given a QR factor (A = Q R).
defn
mat-solve
(mat-solve [^borrow a : mat ^borrow b : lavec spd? : int] :)
factorize and solve A x = b. spd? = 1 selects Cholesky.
defn
mat-inv
(mat-inv [^borrow a : mat] :)
inverse of a square matrix via LU column solves.
defn
mat-det
(mat-det [^borrow a : mat] :)
determinant of a square matrix via LU.
Internal definitions
__fwd-sub-kernel-- forward / backward substitution__back-sub-kernel-- solve U x = b, U upper triangular (n x n, row stride n).__qt-b-kernel-- c[i] = sum_j Q[j*m+i] * b[j] for i in 0..n (Q is m x m).__lu-det-kernel-- determinant from an LU factor: product of U diagonal