dense
Dense linear algebra: the three swappable seams and the routines behind them.
F64Kernels — the level-1 kernels (
dot,axpy,scale,nrm2,asum). These are specialized at compile time rather than dispatched per call, and consult a registered backend only above the level-1 dispatch threshold; offered through com.eignex.koblas.registerBackend, forced by installing a com.eignex.koblas.F64Context.F64Blas — the level-2 and level-3 routines in full BLAS alpha/beta/transpose form, plus the triangular solves trsv / trsm and their multiply counterparts. Its binary BLAS flags remain Boolean parameters; calls supplying more than one should name them, as in
trsm(a, b, lower = true, transpose = false, unitDiag = false, right = false).F64Decompositions — the factorizations and the solves built on them: LU (F64Decompositions.factor / F64Decompositions.solve, with F64LuDecomposition and determinant), symmetric indefinite F64LdlDecomposition, F64QrDecomposition with the least-squares and minimum-norm solves, F64PivotedQrDecomposition when the rank is the question rather than the solve, the condition estimate, and the SPD suite cholesky and the F64CholeskyDecomposition solve and invert.
F64LinearAlgebra pairs F64Blas and F64Decompositions; the two are ranked and selected independently, so a host providing one library and not the other still accelerates what it can. Offered through com.eignex.koblas.registerBackend, forced with com.eignex.koblas.installBackends, resolved as com.eignex.koblas.koblas. F64ReferenceLinearAlgebra is the portable implementation every backend is validated against.
Ergonomic entry points: lu and Kotlin arithmetic operators.
Types
Double-precision F64CholeskyDecomposition, the Cholesky factor an unqualified CholeskyDecomposition means.
What F64Decompositions.cholesky does when the matrix turns out not to be positive-definite.
A Cholesky factorization A = L·Lᵀ. Only the lower triangle of l is meaningful; the strict upper triangle holds whatever the factorization left there.
Dense factorizations as a backend half.
The vector-vector routines as a backend half, alongside F64Blas and F64Decompositions. Implementations must agree with F64PlatformKernels to within rounding and read nothing outside the (offset, length) window.
A symmetric indefinite factorization A = L·D·Lᵀ in LAPACK dsytrf lower packed form. ldl and ipiv are live buffers, not copies, so treat them as read-only.
Both halves of the compute seam at once; implement F64Blas or F64Decompositions alone when a backend has one.
A general LU factorization with partial pivoting, P·A = L·U, packed column-major with L below the diagonal and U on and above. lu and piv are live buffers, not copies, so treat them as read-only.
A QR factorization with column pivoting, A·P = Q·R (LAPACK dgeqp3), plus the numerical rank the pivoting revealed. factorization factorizes A·P, so its solutions come out in permuted column order. pivots is a live buffer, not a copy, so treat it as read-only: reordering it changes what every later solve against this factorization returns.
A QR factorization A = Q·R in LAPACK dgeqrf packed form, R on and above the diagonal and the Householder vectors below. qr and tau are live buffers, not copies, so treat them as read-only.
Portable pure-Kotlin backend, correct on every target with no native dependency, and the semantic reference a native backend is validated against. The routines themselves live in F64ReferenceBlas and F64ReferenceDecompositions; this composes them so one object satisfies the whole dense seam.
Double-precision F64Kernels, the vector-vector half an unqualified Kernels means.
Double-precision F64Decompositions, the factorization half an unqualified Lapack means.
Double-precision F64LdlDecomposition, the LDLt factors an unqualified LdlDecomposition means.
Double-precision F64LinearAlgebra, the pair of halves an unqualified LinearAlgebra means.
Double-precision F64LuDecomposition, the LU factors an unqualified LuDecomposition means.
Double-precision F64PivotedQrDecomposition, the pivoted QR an unqualified PivotedQrDecomposition means.
Double-precision F64QrDecomposition, the QR factors an unqualified QrDecomposition means.
Double-precision F64ReferenceBackend, the portable backend an unqualified ReferenceBackend means.
Properties
The F64LinearAlgebra.qrPivoted tolerance meaning "derive one from the matrix", max(m, n) · ε.
The shared portable backend, the fallback every seam resolves to when nothing else is registered.
Functions
Q · y, or Qᵀ · y when transpose, without forming Q; see F64Decompositions.applyQ.
Cholesky factorization A = L·Lᵀ with the active backend (koblas). Uplo.FULL checks that both triangles agree, while Uplo.LOWER or Uplo.UPPER names the authoritative triangle without checking the other. A non-positive pivot throws NotPositiveDefinite unless policy regularizes.
det(A) as sign(P) times the product of the U(k, k).
A⁻¹ from this factorization with the active backend; see F64Decompositions.invert.
A⁻¹ from this factorization (LAPACK dgetri); see F64Decompositions.invert.
Symmetric indefinite factorization A = L·D·Lᵀ with the active backend. Uplo.FULL checks that both triangles agree; Uplo.LOWER or Uplo.UPPER selects one triangle without checking the other.
LU-factorize this square matrix with the active backend (koblas); see F64Decompositions.factor.
QR factorization A = Q·R with the active backend; see F64Decompositions.qr.
QR with column pivoting, A·P = Q·R, with the active backend; see F64Decompositions.qrPivoted.
Reciprocal condition estimate, given the 1-norm anorm of the matrix it came from; see F64Decompositions.rcond. Pair it with com.eignex.koblas.norm1, computed before factoring.
Solve A · x = b for this factorization with the active backend; see F64Decompositions.solve.
Solve A · X = B for the columns of b at once (LAPACK dsytrs with nrhs).
Solve A · x = b for this symmetric indefinite factorization; see F64Decompositions.solve.
Solve A · X = B for the columns of b at once (LAPACK dgetrs with nrhs).
Solve A · x = b (or Aᵀ · x = b when transpose) for this factorization with the active backend.
Least-squares solution against this rank-revealing factorization; see F64Decompositions.solve.
Solve this QR factorization; minimumNorm solves a wide original system from qr(Aᵀ).
B = alpha · op(T) · B, or B = alpha · B · op(T) when right (BLAS dtrmm); see F64LinearAlgebra.trmm. Reads only the triangle lower selects.
Multiply x = op(T) · x in place (BLAS dtrmv); see F64LinearAlgebra.trmv. Reads only the triangle lower selects.
B = alpha · op(T)⁻¹ · B, or B = alpha · B · op(T)⁻¹ when right (BLAS dtrsm); see F64LinearAlgebra.trsm. Reads only the triangle lower selects, and a singular triangle yields infinities or NaNs.
Solve op(T) · x = b in place (BLAS dtrsv); see F64LinearAlgebra.trsv. Reads only the triangle lower selects, and does not check the diagonal, so a singular triangle yields infinities or NaNs.
Invert the lower or upper triangle of a (LAPACK dtrtri); see F64LinearAlgebra.trtri.