]> git.tdb.fi Git - libs/math.git/blobdiff - source/linal/squarematrix.h
Support Matrix multiplication operators on SquareMatrix
[libs/math.git] / source / linal / squarematrix.h
index 0a97e61172b6489c58e91296421e946cfddfb9d8..5b9415a0e22bcddff7f738284b455a7a5a7cb76c 100644 (file)
@@ -24,6 +24,7 @@ public:
        static SquareMatrix identity();
 
        SquareMatrix &operator*=(const SquareMatrix &);
+       using Matrix<T, S, S>::operator*=;
 
        SquareMatrix &invert();
 };
@@ -47,14 +48,16 @@ template<typename T, unsigned S>
 SquareMatrix<T, S> &SquareMatrix<T, S>::invert()
 {
        SquareMatrix<T, S> r = identity();
-       return invert_matrix(*this, r);
+       gauss_jordan(*this, r);
+       return *this = r;
 }
 
 template<typename T, unsigned S>
 inline SquareMatrix<T, S> invert(const SquareMatrix<T, S> &m)
 {
-       SquareMatrix<T, S> r = m;
-       return r.invert();
+       SquareMatrix<T, S> temp = m;
+       SquareMatrix<T, S> r = SquareMatrix<T, S>::identity();
+       return gauss_jordan(temp, r);
 }
 
 } // namespace LinAl