GitHub
deepbox/linalg

Solvers

Dense, sparse, triangular, banded, and matrix-equation solvers exposed by deepbox/linalg.
Linear systems
type CSRMatrix
export type CSRMatrix = { readonly n: number; readonly values: Float64Array; readonly colIndices: Int32Array; readonly rowPointers: Int32Array; };
Compressed Sparse Row (CSR) matrix representation.
denseToCSR
export declare function denseToCSR(a: Tensor): CSRMatrix;

Convert a dense tensor to CSR sparse format.

lstsq
export declare function lstsq(a: Tensor, b: Tensor, rcond?: number): { readonly x: Tensor; readonly residuals: Tensor; readonly rank: number; readonly s: Tensor; };

Least squares solution to A * x = b.

lyapunov
export declare function lyapunov(a: Tensor, q: Tensor): Tensor;

Solve the continuous Lyapunov equation AX + XAᵀ = Q.

solve
export declare function solve(a: Tensor, b: Tensor): Tensor;

Solve linear system A * x = b.

solve_banded
export declare function solve_banded(luBands: readonly [number, number], ab: Tensor, b: Tensor): Tensor;

Solve a banded linear system A x = b.

solveTriangular
export declare function solveTriangular(a: Tensor, b: Tensor, lower?: boolean): Tensor;

Solve triangular system.

sparseCholeskySolve
export declare function sparseCholeskySolve(csr: CSRMatrix, b: Tensor): Tensor;

Solve a sparse symmetric positive-definite system using sparse Cholesky.

sparseSolve
export declare function sparseSolve(csr: CSRMatrix, b: Tensor): Tensor;

Solve a sparse linear system A x = b using sparse LU factorization.

sylvester
export declare function sylvester(a: Tensor, b: Tensor, c: Tensor): Tensor;

Solve the continuous Sylvester equation AX + XB = C.

linalg-solvers.ts
import {  denseToCSR,  lstsq,  solve,  solveTriangular,  sparseSolve,  sylvester,} from "deepbox/linalg";import { tensor } from "deepbox/ndarray";const a = tensor([[3, 1], [1, 2]]);const b = tensor([9, 8]);const leastSquares = lstsq(a, b);console.log(solve(a, b).toString());console.log(solveTriangular(a, b, false).toString());console.log(leastSquares.x.toString(), leastSquares.rank);console.log(sparseSolve(denseToCSR(a), b).toString());console.log(sylvester(a, a, tensor([[1, 0], [0, 1]])).toString());