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();
};
}
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;
}
for(unsigned i=0; i<rows_; ++i)
r(i, i) = T(1);
- return gauss_jordan(*this, r);
+ gauss_jordan(*this, r);
+ return *this = r;
}
template<typename T>