diff --git a/main.cpp b/main.cpp index f86c636..a8a455c 100644 --- a/main.cpp +++ b/main.cpp @@ -6,16 +6,13 @@ int main() { srand(time(0)); - Matrix a(2,1); - Matrix b(1,2); - + Matrix a(3,1); a.Randomize(); - b.Randomize(); + + Matrix b = a; a.Print("A"); b.Print("B"); - a.Multiply(&b).Print("A x B"); - return 0; } \ No newline at end of file diff --git a/matrices.h b/matrices.h index ffbce67..e8e0531 100644 --- a/matrices.h +++ b/matrices.h @@ -1,6 +1,7 @@ #include #include #include +#include #define assertm(exp, msg) assert((void(msg), exp)) @@ -8,31 +9,40 @@ class Matrix{ private: std::vector> values; public: - void Randomize(); - void Randomize(float, float); + inline void Randomize(); + inline void Randomize(float, float); - void Set(float); + inline void Set(float); - void Multiply(float); - Matrix Multiply(Matrix*); + inline void Multiply(float); + inline Matrix Multiply(Matrix*); - void Hadamard(Matrix*); + inline void Hadamard(Matrix*); - void Add(float); - void Add(Matrix*); + inline void Add(float); + inline void Add(Matrix*); - void Substract(float); - void Substract(Matrix*); + inline void Substract(float); + inline void Substract(Matrix*); - void Print(std::string_view); + inline void Print(std::string_view); - void Transpose(); + inline void Transpose(); + + // --- Operators + // Assign + inline Matrix operator=(const Matrix*); // Constructors - Matrix(int, int); - Matrix(Matrix*); + inline Matrix(int, int); + inline Matrix(Matrix*); }; +Matrix Matrix::operator=(const Matrix* other){ + this->values = other->values; + return *this; +} + // Constructs a zero matrix Matrix::Matrix(int rows, int cols){ for(int m = 0; m < rows; m++){