F64DecompositionsAdapter
The dense factorizations a host LAPACKE provides, over whichever LapackeCalls the platform supplies. Both host bindings are this class plus their own FFI mechanism.
The size at which a native call starts to pay differs by host, so every gate arrives in dispatch, resolved from the binding's own configuration. Its defaults dispatch natively at any size.
Inheritors
Properties
isPortable
A binding that calls out, whatever the portable instance it falls back to reports.
Whether this backend can do work on this host. koblas's own implementations always can, so the default is true; a binding reports whether the library it calls resolved.
The vector kernels this half's inherited routines run on; the installed ones by default.
Relative preference among the backends offered for one half (F64Blas, F64Decompositions, F64Kernels or a sparse counterpart). registerBackend picks the highest; the portable reference is 0.
Functions
applyQInto
Apply Q, or Qᵀ when transpose, from qr to y into out, which is returned. out may be y.
cholesky
Reads only the lower triangle of the input, and falls back to the portable path on a positive info, which CholeskyPolicy.Regularize needs.
factor
factorInto
dgetrf works in place, so out's buffers take the copy of a and the factorization overwrites it.
invert
Invert a general matrix from its LU factorization, returning A⁻¹ given P·A = L·U (LAPACK dgetri). Prefer solve to apply A⁻¹, which costs less and is more accurate.
Throws
if lu is singular; the position is F64LuDecomposition.failedAt.
dpotri writes only the triangle it is given, so the result is mirrored, and it overwrites the factor, so the factor is copied first.
ldl
Symmetric indefinite factorization A = L·D·Lᵀ with Bunch-Kaufman pivoting (LAPACK dsytrf, lower). Reads only the lower triangle of a, so an upper-only matrix factors to silent nonsense.
qr
qrPivoted
QR with column pivoting, A·P = Q·R (LAPACK dgeqp3), reporting F64PivotedQrDecomposition.rank as the count of leading diagonal entries with |R_kk| > tolerance · |R₀₀|. tolerance is a fraction of |R₀₀|; AUTOMATIC_RANK_TOLERANCE derives one from the shape, max(m, n) · ε, and a negative value is rejected.
Throws
if tolerance is negative.
rcond
solveInto
solve into out, which is returned. Its length is n by default and m with minimumNorm. A workspace lends the intermediate for applying Q or Qᵀ.
solve into out, which is returned.
Delegated to the portable path for the same reason as a small gemv, the per-call cost.
Solve A · X = B, or Aᵀ · X = B when transpose, into out, which is returned. out may be b, and a workspace lends the transposed direction's n·nrhs staging block.
The vector solve stays portable on both bindings: one dsytrs call does not cover its own cost.
Native only from the configured right-hand-side count, as for the LU multi-RHS solve above.
trtri
Invert a triangular matrix into a fresh result (LAPACK dtrtri), returning T⁻¹ for the lower or upper triangle of the square a, taking the diagonal as 1 when unitDiag.
Throws
naming the first zero diagonal position.
Solve A · X = B for all right-hand-side columns of b at once against a symmetric indefinite factorization (LAPACK dsytrs with nrhs).
Solve A · x = b for a symmetric indefinite factorization ldl (LAPACK dsytrs).
Solve A · X = B, or Aᵀ · X = B when transpose, for all right-hand-side columns of b at once (LAPACK dgetrs with nrhs).
Least-squares solve from a pivoted factorization, with the column permutation undone. A rank-deficient factorization returns the basic solution, not the minimum-norm one: zero outside the pivoted rank.
Solve from a QR factorization. By default, finds the least-squares solution min ‖A·x − b‖₂ for a tall or square A; it requires full column rank and returns R⁻¹·(Qᵀb). With minimumNorm, finds the minimum-norm solution of a consistent wide system from qr(Aᵀ); it requires full row rank.