- Adding, subtracting, multiplying, and finding the determinant of matrices. - Calculating a large power of a matrix, using matrix diagonalization if possible. - Multiplying a chain of matrices of different sizes, and finding the most efficient order to multiply them in (see https://practice.geeksforgeeks.org/problems/matrix-chain-multiplication/0) - LU factorization - Gaussian elimination, with exceptions thrown for undetermined or linearly dependent systems. - Algorithm to convert a linearly dependent matrix (or system) to a linearly independent matrix without loss of information (only redundancy. - Maybe these algorithms should be written as a C++ STL template so that they can be used with any data type (ie double, int, etc) - Use OpenMP or another parallelization library to make these algorithms as efficient as possible.