From 165c3e3161b7a60e004df423b1b508eb515c30fe Mon Sep 17 00:00:00 2001 From: Chad Cotton Date: Thu, 8 May 2025 10:15:21 -0500 Subject: [PATCH] Fix transpose. --- include/LinearLib/Matrix.hpp | 10 +++++----- tests/MatrixTests.cpp | 11 +++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) 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") {