A Julia package for quasi upper triangular matrices strongly inspired by https://github.com/JuliaLang/julia/blob/master/stdlib/LinearAlgebra/src/triangular.jl
WORK IN PROGRESS
Type QuasiUpperTriangular
stores a quasi upper triangular matrix in
a square matrix. The various algorithms ignore the lower zero elements
Conventional mul!
functions are defined to allow normal multiplication using *
lets define
$Q * \vec{v}$ $Q^T * \vec{v}$
$Q * {A}$ $Q^T * A$ $A * Q$ $A * Q^T$
-
ldiv!(Q, A)
solves$Q*X = A$ , Solves by back substitution. Lower off-diagonal elements make 2 * 2 problems that are solved explicitly. -
rdiv!(A, Q)
solves$X*Q = A$ , Solves by back substitution. Lower off-diagonal elements make 2 * 2 problems that are solved explicitly. -
rdiv!(A, Q')
solves$X*Q^T = A$ , Solves by back substitution. Lower off-diagonal elements make 2 * 2 problems that are solved explicitly.
lets define
Note: these functions break conventions and mutate their last argument
-
I_plus_rA_ldiv_B!(r, Q, b)
solves$(I + rQ)*\vec{x} = \vec{b}$ -
I_plus_rA_ldiv_B!(r, Q, B)
solves$(I + rQ)*X = B$ -
I_plus_rA_plus_sB_ldiv_C!(r, s, Q1, Q2, c)
solves$(I + rQ_1 + sQ_2)*\vec{x} = \vec{c}$ -
I_plus_rA_plus_sB_ldiv_C!(r, s, Q1, Q2, C)
solves$(I + rQ_1 + sQ_2)*X = C$
- assert that sub-diagonal does not contain consecutive non-zero elements
- handle quasi lower triangular matrices
- profile, benchmark, and reintroduce BLAS based implementations if needed (for specific strided-matrix element-types)