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 | 
