more operators
This commit is contained in:
@@ -124,6 +124,18 @@ template<typename TYPE, typename ARRAY=TYPE*> class MatrixBase {
|
||||
return *this;
|
||||
}
|
||||
|
||||
MatrixBase& operator*=(const TYPE& o) {
|
||||
TYPE *res((TYPE*)(_c)+SIZE);
|
||||
while (res>(TYPE*)(_c)) *--res *= o;
|
||||
return *this;
|
||||
}
|
||||
|
||||
MatrixBase& operator/=(const TYPE& o) {
|
||||
TYPE *res((TYPE*)(_c)+SIZE);
|
||||
while (res>(TYPE*)(_c)) *--res /= o;
|
||||
return *this;
|
||||
}
|
||||
|
||||
///}
|
||||
|
||||
/// @name element access
|
||||
@@ -221,6 +233,16 @@ template<typename TYPE, size_t TROWS=0, size_t TCOLUMNS=0> class Matrix:
|
||||
return res;
|
||||
}
|
||||
|
||||
template<size_t NEWCOLUMNS>
|
||||
Matrix operator*(const Matrix<TYPE, TCOLUMNS, NEWCOLUMNS>& o) {
|
||||
Matrix<TYPE, TROWS, NEWCOLUMNS> res;
|
||||
for (size_t i(0); i<TROWS; ++i)
|
||||
for (size_t k(0); k<NEWCOLUMNS; ++k)
|
||||
for (size_t j(0); j<TCOLUMNS; ++j)
|
||||
res(i, k) += (*this)(i, j) * o(j, k);
|
||||
return res;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
@@ -321,12 +343,6 @@ template<typename TYPE> class Matrix<TYPE, 0, 0>: public MatrixBase<TYPE> {
|
||||
|
||||
//==============================================================================
|
||||
|
||||
template<typename TYPE, size_t ROWS, size_t COLUMNS>
|
||||
Matrix<TYPE, ROWS, COLUMNS> operator+(const Matrix<TYPE, ROWS, COLUMNS>& m1, const Matrix<TYPE, ROWS, COLUMNS>& m2) {
|
||||
Matrix<TYPE, ROWS, COLUMNS> res(m1);
|
||||
return res+=m2;
|
||||
}
|
||||
|
||||
template<typename TYPE, size_t ROWS, size_t COLUMNS>
|
||||
std::ostream& operator<<(std::ostream& s, const Matrix<TYPE, ROWS, COLUMNS>& m) {
|
||||
for (size_t w = 0; w < m.ROWS; ++w) {
|
||||
|
Reference in New Issue
Block a user