X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flinal%2Fmatrix.h;h=83a64f50dd767ff1497804378be48160e8691ed0;hb=03f70f6ba9622bb2840a14fc50ac72201cc533b5;hp=94a6e0991b2d13502e2f998107d5e26f5831ad04;hpb=a3d9772a9fd483278b6248a811dc6f4ce968892b;p=libs%2Fmath.git diff --git a/source/linal/matrix.h b/source/linal/matrix.h index 94a6e09..83a64f5 100644 --- a/source/linal/matrix.h +++ b/source/linal/matrix.h @@ -25,10 +25,10 @@ public: static Matrix from_columns(const Vector *); static Matrix from_rows(const Vector *); - T &element(unsigned, unsigned); - const T &element(unsigned, unsigned) const; - T &operator()(unsigned, unsigned); - const T &operator()(unsigned, unsigned) const; + T &element(unsigned i, unsigned j) { return data[i+M*j]; } + const T &element(unsigned i, unsigned j) const { return data[i+M*j]; } + T &operator()(unsigned i, unsigned j) { return element(i, j); } + const T &operator()(unsigned i, unsigned j) const { return element(i, j); } Matrix &operator*=(T); Matrix &operator/=(T); @@ -54,9 +54,11 @@ inline Matrix::Matrix(const T *d) template template -inline Matrix::Matrix(const Matrix &m) +inline Matrix::Matrix(const Matrix &other) { - std::copy(m.data, m.data+M*N, data); + for(unsigned i=0; i @@ -77,30 +79,6 @@ inline Matrix Matrix::from_rows(const Vector *v) m(i, j) = v[i][j]; } -template -inline T &Matrix::element(unsigned i, unsigned j) -{ - return data[i+M*j]; -} - -template -inline const T &Matrix::element(unsigned i, unsigned j) const -{ - return data[i+M*j]; -} - -template -inline T &Matrix::operator()(unsigned i, unsigned j) -{ - return element(i, j); -} - -template -inline const T &Matrix::operator()(unsigned i, unsigned j) const -{ - return element(i, j); -} - template inline Matrix &Matrix::operator*=(T s) {