This repository is a work in progress. It will contain a set of algorithms for solving some problems in Linear Algebra.
I started this project to educate myself on writing linear algebra routines and extending these algorithms to a compatible type.
I intend to learn about matrix factorization and develop insights to elide operations given their type information e.g. computing
Note that there is no long-term initiative to support and resolve bugs on this project. The robustness of the codebase relies on the test coverage. You are welcome to submit an issue or drop a suggestion for this repo.
Design for genericity and specialize later on performance
- Add template mechanisms for interopt: it should be able to work with types that meets the operations required by Matrix semantics.
- Zero cost abstraction: Imposing rules and expectations should come without cost
- Minimal redundancies
Matrix Decomposition:
- Singular Value Decomposition
- QR Factorization
- LU Factorization
- LDL Decomposition
- PLU Decomposition
- Eigenvalue Decomposition
Matrix Operations:
- Matrix-Matrix operations
- Matrix-Vector operations
- Transpose
- Determinant
- Minor
- Cofactor
- Adjugate
- Matrix-Scalar operations
- Inverse
- Colspace
- Rowspace
- Nullspace
- Span
Matrix Decompositions
Method | Description | Type of Matrix | Status |
---|---|---|---|
LU Decomposition | Factors a matrix into a product of a lower triangular matrix |
Square | |
QR Decomposition | Factors a matrix into a product of an orthogonal matrix |
Square, Rectangular | |
Cholesky Decomposition | Factors a symmetric positive-definite matrix into a product of a lower triangular matrix |
Symmetric Positive-Definite | |
Singular Value Decomposition (SVD) | Factors a matrix into a product of three matrices: |
Square, Rectangular | |
Eigenvalue Decomposition | Decomposes a matrix into its eigenvalues and eigenvectors. | Square | |
Schur Decomposition | Decomposes a matrix into a product of an orthogonal matrix |
Square | |
Hessenberg Decomposition | Decomposes a matrix into a product of an orthogonal matrix |
Square | |
Jordan Decomposition | Decomposes a matrix into its Jordan normal form. | Square | |
Polar Decomposition | Decomposes a matrix into a product of a unitary matrix |
Square | |
Bunch-Kaufman Decomposition | Factors a symmetric or Hermitian matrix into a product involving a permutation matrix, a lower triangular matrix, and a block diagonal matrix. | Symmetric, Hermitian |