C++20 N-dimensional Matrix class for hobby project
- STL compatible iterators
- reshape (O(1) move operation, no copy)
- submatrix (implemented as a non-owning view, no copy)
- row, col (no copy, basically non-owning views)
- transpose
- add, sub, mul, div, modulus (supports broadcasting)
- scalar assignment, addition, subtraction, multiplication, division, etc (operations defined provided that scalar types are compatible)
operator+=, -=, *=, /=, %=
, etc
- Inner product
- Matrix multiplication
- Outer product
- LUP decomposition + Gaussian elimination
- QR decomposition
- Deteminant, Trace
- Norm
- Vector normalization
- Singular Value Decomposition (able to low rank approx SVD)
- Matrix Inverse, Pseudoinverse
- Eigenvalues
- Eigenvalues + Eigenvectors
- File I/O
- Einsum
- Coordinatewise initialization
- Sparse matrix
- FFT
- Matrix over discrete scalars (In particular, Z_p)
- Array manipulations like concat, split, row/column rotate, zeropad, etc (tedious...)
- Expand linear algebra stuffs to >2D (tedious...)
- Neural network operations (CNN, RNN, etc)
- N-dim sampling (N-dim Gaussian, t-Student, Gamma, Wishart, etc)
- Migrate to C++20 modules (Current MSVC 19.28 implementation is broken, waiting for fix)
- Binding with Python
- Documentation for APIs
- Build testing frameworks