]> git.tdb.fi Git - libs/math.git/blobdiff - source/linal/dynamicmatrix.h
Make gauss_jordan operate on columns instead of rows
[libs/math.git] / source / linal / dynamicmatrix.h
index 1b191a1b3f9a5d4696c4d535e94553e6b96f93e6..de4511c647e870eaf97376127c3195b8ccabe979 100644 (file)
@@ -45,9 +45,9 @@ public:
        DynamicMatrix &operator+=(const DynamicMatrix &);
        DynamicMatrix &operator-=(const DynamicMatrix &);
 
-       DynamicMatrix &exchange_rows(unsigned, unsigned);
-       DynamicMatrix &multiply_row(unsigned, T);
-       DynamicMatrix &add_row(unsigned, unsigned, T);
+       DynamicMatrix &exchange_columns(unsigned, unsigned);
+       DynamicMatrix &multiply_column(unsigned, T);
+       DynamicMatrix &add_column(unsigned, unsigned, T);
 
        DynamicMatrix &invert();
 };
@@ -252,38 +252,38 @@ inline bool operator==(const DynamicMatrix<T> &m1, const DynamicMatrix<T> &m2)
 }
 
 template<typename T>
-inline DynamicMatrix<T> &DynamicMatrix<T>::exchange_rows(unsigned i, unsigned j)
+inline DynamicMatrix<T> &DynamicMatrix<T>::exchange_columns(unsigned i, unsigned j)
 {
-       if(i>=rows_ || j>=rows_)
-               throw std::out_of_range("DynamicMatrix::exchange_rows");
+       if(i>=columns_ || j>=columns_)
+               throw std::out_of_range("DynamicMatrix::exchange_columns");
 
        using std::swap;
        for(unsigned k=0; k<columns_; ++k)
-               swap(element(i, k), element(j, k));
+               swap(element(k, i), element(k, j));
 
        return *this;
 }
 
 template<typename T>
-inline DynamicMatrix<T> &DynamicMatrix<T>::multiply_row(unsigned i, T s)
+inline DynamicMatrix<T> &DynamicMatrix<T>::multiply_column(unsigned i, T s)
 {
-       if(i>=rows_)
-               throw std::out_of_range("DynamicMatrix::multiply_row");
+       if(i>=columns_)
+               throw std::out_of_range("DynamicMatrix::multiply_column");
 
        for(unsigned k=0; k<columns_; ++k)
-               element(i, k) *= s;
+               element(k, i) *= s;
 
        return *this;
 }
 
 template<typename T>
-inline DynamicMatrix<T> &DynamicMatrix<T>::add_row(unsigned i, unsigned j, T s)
+inline DynamicMatrix<T> &DynamicMatrix<T>::add_column(unsigned i, unsigned j, T s)
 {
-       if(i>=rows_ || j>=rows_)
-               throw std::out_of_range("DynamicMatrix::exchange_rows");
+       if(i>=columns_ || j>=columns_)
+               throw std::out_of_range("DynamicMatrix::exchange_columns");
 
        for(unsigned k=0; k<columns_; ++k)
-               element(j, k) += element(i, k)*s;
+               element(k, j) += element(k, i)*s;
 
        return *this;
 }