OverEngineered (a matrix algebra library)

Over-Engineered: Because 'good enough' is never enough in Linear Algebra.

to define a matrix -> matrix<data_type>mat(number_of_rows,number_of_cols,an array ,size of the array) data type either float ,long ,double or complex or any datatype example : double arr[] ={ 1,1,2,3, 2,2,2,5, 2,5,2,6 }; matrix<double>test(3,4,arr,12); test = test.gauss_down() ; test.show(); fourier related functions only works with matrices with complex data type or matrix<complex> you must get all the files and in the main.cpp don't forget to include the header like that : #include "matrix_algebra.h"

About

-This matrix operations library is a testament to my self-learning journey into machine learning and linear algebra. -It is being developed while I study linear algebra through the lectures of Professor Gilbert Strang on the MIT OpenCourseWare. -The library is open-source and invites contributions from anyone interested in enhancing its capabilities. -The library is a comprehensive toolkit for matrix operations, with Gaussian elimination with pivoting being the cornerstone. -This algorithm is extensively used in functions that calculate rank, determinant, inverse, solution of linear systems, LU factorization, row reduced Echelon form, the four subspaces, linear dependency, and more. -The library also provides a projection, fitting a set of data into a linear system of equations, Gram-Schmidt algorithm implementation, and extraction of features of matrices. -My goal is to finish the remaining 50% of the course and add the rest of the algorithms that I will have learned and add more features. -As I continue to learn from his lectures, I will keep updating the library with new features and optimizations. -I hope it can serve as a useful tool for others on a similar journey.