Developer API
StableLinearAlgebra.mul_P! — Functionmul_P!(A, p, B)Evaluate the matrix product $A = P \cdot B,$ where $P$ is a permutation matrix represented by the vector of integers p.
mul_P!(A, B, p)Evaluate the matrix product $A = B \cdot P,$ where $P$ is a permutation matrix represented by the vector of integers p.
StableLinearAlgebra.inv_P! — Functioninv_P!(p⁻¹, p)Calculate the inverse/transpose $P^{-1}=P^T$ of a permuation $P$ represented by the vector p, writing the result to p⁻¹.
StableLinearAlgebra.perm_sign — Functionperm_sign(p::AbstractVector{Int})Calculate the sign/parity of the permutation p, $\textrm{sgn}(p) = \pm 1.$
LAPACK LinearAlgebra
StableLinearAlgebra.QRWorkspace — TypeQRWorkspace{T<:Number, E<:Real}Allocated space for calcuating the pivoted QR factorization using the LAPACK routines geqp3! and orgqr! while avoiding dynamic memory allocations.
StableLinearAlgebra.LUWorkspace — TypeLUWorkspace{T<:Number, E<:Real}Allocated space for calcuating the pivoted QR factorization using the LAPACK routine getrf!. Also interfaces with the getri! and getrs! routines for inverting matrices and solving linear systems respectively.
StableLinearAlgebra.inv_lu! — Functioninv_lu!(A::AbstractMatrix{T}, ws::LUWorkspace{T}) where {T}Calculate the inverse of the matrix A, overwriting A in-place. Also return $\log(|\det A^{-1}|)$ and $\textrm{sign}(\det A^{-1}).$
StableLinearAlgebra.ldiv_lu! — Functionldiv_lu!(A::AbstractMatrix{T}, B::AbstractMatrix{T}, ws::LUWorkspace{T}) where {T}Calculate $B:= A^{-1} B,$ modifying $B$ in-place. The matrix $A$ is over-written as well. Also return $\log(|\det A^{-1}|)$ and $\textrm{sign}(\det A^{-1}).$
StableLinearAlgebra.det_lu! — Functiondet_lu!(A::AbstractMatrix{T}, ws::LUWorkspace{T}) where {T}Return $\log(|\det A|)$ and $\textrm{sign}(\det A).$ Note that $A$ is left modified by this function.