# | Line 38 | Line 38 | namespace oopse { | |
---|---|---|
38 | #include "Vector.hpp" | |
39 | ||
40 | namespace oopse { | |
41 | – | const double epsilon = 0.000001; |
41 | ||
43 | – | template<typename T> |
44 | – | inline bool equal(T e1, T e2) { |
45 | – | return e1 == e2; |
46 | – | } |
47 | – | |
48 | – | template<> |
49 | – | inline bool equal(float e1, float e2) { |
50 | – | return fabs(e1 - e2) < epsilon; |
51 | – | } |
52 | – | |
53 | – | template<> |
54 | – | inline bool equal(double e1, double e2) { |
55 | – | return fabs(e1 - e2) < epsilon; |
56 | – | } |
57 | – | |
42 | /** | |
43 | * @class RectMatrix RectMatrix.hpp "math/RectMatrix.hpp" | |
44 | * @brief rectangular matrix class | |
# | Line 169 | Line 153 | namespace oopse { | |
153 | } | |
154 | ||
155 | /** | |
156 | + | * swap two rows of this matrix |
157 | + | * @param i the first row |
158 | + | * @param j the second row |
159 | + | */ |
160 | + | void swapRow(unsigned int i, unsigned int j){ |
161 | + | assert(i < Row && j < Row); |
162 | + | |
163 | + | for (unsigned int k = 0; k < Col; k++) |
164 | + | std::swap(data_[i][k], data_[j][k]); |
165 | + | } |
166 | + | |
167 | + | /** |
168 | + | * swap two colums of this matrix |
169 | + | * @param i the first colum |
170 | + | * @param j the second colum |
171 | + | */ |
172 | + | void swapColum(unsigned int i, unsigned int j){ |
173 | + | assert(i < Col && j < Col); |
174 | + | |
175 | + | for (unsigned int k = 0; k < Row; k++) |
176 | + | std::swap(data_[k][i], data_[k][j]); |
177 | + | } |
178 | + | |
179 | + | /** |
180 | * Tests if this matrix is identical to matrix m | |
181 | * @return true if this matrix is equal to the matrix m, return false otherwise | |
182 | * @m matrix to be compared | |
# | Line 428 | Line 436 | namespace oopse { | |
436 | for (unsigned int i = 0; i < Row; i++) | |
437 | for (unsigned int j = 0; j < Col; j++) | |
438 | for (unsigned int k = 0; k < SameDim; k++) | |
439 | < | result(i, j) = m1(i, k) * m2(k, j); |
439 | > | result(i, j) += m1(i, k) * m2(k, j); |
440 | ||
441 | return result; | |
442 | } | |
# | Line 464 | Line 472 | namespace oopse { | |
472 | ||
473 | return result; | |
474 | } | |
475 | + | |
476 | + | /** |
477 | + | * Write to an output stream |
478 | + | */ |
479 | + | template<typename Real, unsigned int Row, unsigned int Col> |
480 | + | std::ostream &operator<< ( std::ostream& o, const RectMatrix<Real, Row, Col>& m) { |
481 | + | for (unsigned int i = 0; i < Row ; i++) { |
482 | + | o << "("; |
483 | + | for (unsigned int j = 0; j < Col ; j++) { |
484 | + | o << m(i, j); |
485 | + | if (j != Col -1) |
486 | + | o << "\t"; |
487 | + | } |
488 | + | o << ")" << std::endl; |
489 | + | } |
490 | + | return o; |
491 | + | } |
492 | } | |
493 | #endif //MATH_RECTMATRIX_HPP |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |