X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flinal%2Fdynamicmatrix.h;h=de4511c647e870eaf97376127c3195b8ccabe979;hb=ff8619c1c440fd1a7c8deaca763a33b8e1d53b5e;hp=3852424876c1cc72e9befa66e12cd0f54147659f;hpb=5797fe0a5296952cb8f8643fdc6cabddee19a554;p=libs%2Fmath.git diff --git a/source/linal/dynamicmatrix.h b/source/linal/dynamicmatrix.h index 3852424..de4511c 100644 --- a/source/linal/dynamicmatrix.h +++ b/source/linal/dynamicmatrix.h @@ -2,6 +2,7 @@ #define MSP_LINAL_DYNAMICMATRIX_H_ #include +#include #include "dynamicvector.h" #include "matrixops.h" @@ -44,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(); }; @@ -251,38 +252,38 @@ inline bool operator==(const DynamicMatrix &m1, const DynamicMatrix &m2) } template -inline DynamicMatrix &DynamicMatrix::exchange_rows(unsigned i, unsigned j) +inline DynamicMatrix &DynamicMatrix::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 -inline DynamicMatrix &DynamicMatrix::multiply_row(unsigned i, T s) +inline DynamicMatrix &DynamicMatrix::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 -inline DynamicMatrix &DynamicMatrix::add_row(unsigned i, unsigned j, T s) +inline DynamicMatrix &DynamicMatrix::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 &DynamicMatrix::invert() for(unsigned i=0; i @@ -317,6 +319,27 @@ inline DynamicMatrix invert(const DynamicMatrix &m) return r.invert(); } +template +inline std::ostream &operator<<(std::ostream &s, const DynamicMatrix &m) +{ + s << "DynamicMatrix" << m.rows() << 'x' << m.columns() << '('; + for(unsigned i=0; i