diff --git a/include/LinearLib/Matrix.hpp b/include/LinearLib/Matrix.hpp index 0c97cf7..0e43e64 100644 --- a/include/LinearLib/Matrix.hpp +++ b/include/LinearLib/Matrix.hpp @@ -124,12 +124,12 @@ namespace LinearLib { return res; } - Matrix transpose() const { - Matrix res; + Matrix transpose() const { + Matrix res; - for (std::size_t i = 0; i < R; i++) { - for (std::size_t j = 0; j < C; j++) { - res.data[j][i] = data[i][j]; + for (std::size_t i = 0; i < C; i++) { + for (std::size_t j = 0; j < R; j++) { + res.data[i][j] = data[j][i]; } } diff --git a/tests/MatrixTests.cpp b/tests/MatrixTests.cpp index da6acf7..27316d4 100644 --- a/tests/MatrixTests.cpp +++ b/tests/MatrixTests.cpp @@ -99,15 +99,18 @@ TEST_CASE("Matrix operations", "[vector]") { } SECTION("Matrix transpose") { - const Matrix<2, 2, int> m {{1, 2}, - {1, 2}}; + const Matrix<3, 2, int> m {{1, 2}, + {4, 2}, + {5, 6}}; - const Matrix<2, 2, int> result = m.transpose(); + const Matrix<2, 3, int> result = m.transpose(); REQUIRE(result[0][0] == 1); - REQUIRE(result[0][1] == 1); + REQUIRE(result[0][1] == 4); + REQUIRE(result[0][2] == 5); REQUIRE(result[1][0] == 2); REQUIRE(result[1][1] == 2); + REQUIRE(result[1][2] == 6); } SECTION("Matrix determinant") {