more operators

master
Marc Wäckerlin 8 years ago
parent dcd8bd1213
commit 092d194b95
  1. 2
      COPYING
  2. 22
      ChangeLog
  3. 2
      INSTALL
  4. 28
      src/matrix.hxx

@ -1 +1 @@
/usr/share/automake-1.14/COPYING
/usr/share/automake-1.15/COPYING

@ -1,3 +1,25 @@
2016-08-16 14:41
* COPYING, INSTALL, ax_init_standard_project.m4, configure.ac,
src/matrix.hxx, test/basic.cxx: remove redundancy, collect common
functionality in base class
2016-08-08 20:03
* src/matrix.hxx, test/basic.cxx: more operator, more checks passed
2016-08-03 18:43
* configure.ac, test/makefile.am: all tests passed
2016-08-03 18:39
* COPYING, ChangeLog, INSTALL, ax_cxx_compile_stdcxx_11.m4,
ax_init_standard_project.m4, configure.ac, examples/makefile.am,
examples/matrix-sample.cxx, src/makefile.am, src/matrix.hxx,
test/basic.cxx, test/makefile.am: first approach including first
tests
2016-07-30 08:50
* ., AUTHORS, ChangeLog, NEWS, README, autogen.sh, ax_check_qt.m4,

@ -1 +1 @@
/usr/share/automake-1.14/INSTALL
/usr/share/automake-1.15/INSTALL

@ -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) {

Loading…
Cancel
Save