From a5ffb69565e80c3b8afd7579bae2acebb1cfb6d6 Mon Sep 17 00:00:00 2001 From: AlmeidaDaniel <2309248@upy.edu.mx> Date: Fri, 27 Mar 2026 16:34:23 -0600 Subject: [PATCH] code chnages --- src/spider/runtime/math/Matrix_Multiply.cpp | 404 +++++++++++++++++++- src/spider/runtime/math/matrix_multiply.exe | Bin 0 -> 145554 bytes 2 files changed, 383 insertions(+), 21 deletions(-) create mode 100644 src/spider/runtime/math/matrix_multiply.exe diff --git a/src/spider/runtime/math/Matrix_Multiply.cpp b/src/spider/runtime/math/Matrix_Multiply.cpp index cb965db..ed47dff 100644 --- a/src/spider/runtime/math/Matrix_Multiply.cpp +++ b/src/spider/runtime/math/Matrix_Multiply.cpp @@ -17,27 +17,15 @@ struct Matrix { template Matrix mat_multiply(Matrix A, Matrix B) { //Determination of resulting matrix size - int RSize; - if(M > P){ - RSize = M ; - } - else{ - RSize = P; - } - - //Condition for resulting matrix size rounding calculation - int CSize; - if (RSize <= 4){ - CSize = 4; - } - else if (RSize % 4 == 0){ - CSize = RSize; - } - else{ - CSize = 4 * (int(RSize/4) + 1); - } + // COMPILE-TIME calculation (using constexpr) + constexpr int RSize = (M > P) ? M : P; + + // COMPILE-TIME square size calculation + constexpr int CSize = (RSize <= 4) ? 4 : + (RSize % 4 == 0) ? RSize : + 4 * (RSize / 4 + 1); - // SIMD width selection (based on your Python logic) + // SIMD width selection int simd_width; if (RSize > 8) { simd_width = 8; @@ -116,7 +104,381 @@ Matrix mat_multiply(Matrix A, Matrix B) { } } - return result; + return result; +} +// Helper function to print matrices for testing +void printMatrix(const Matrix& m) { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + std::cout << m.data[i][j] << " "; + } + std::cout << std::endl; + } +} + +void printMatrix(const Matrix& m) { + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + std::cout << m.data[i][j] << " "; + } + std::cout << std::endl; + } +} + +void printMatrix(const Matrix& m) { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 2; j++) { + std::cout << m.data[i][j] << " "; + } + std::cout << std::endl; + } +} + +void printMatrix(const Matrix& m) { + std::cout << m.data[0][0] << std::endl; +} + +int main() { + std::cout << "========================================" << std::endl; + std::cout << " MATRIX MULTIPLICATION TEST SUITE" << std::endl; + std::cout << "========================================" << std::endl; + int tests_passed = 0; + int total_tests = 6; + + // ==================== TEST 1: Simple 2x2 ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "TEST 1: 2x2 Matrix Multiplication" << std::endl; + std::cout << "========================================" << std::endl; + { + Matrix A; + A.data[0][0] = 1; A.data[0][1] = 2; + A.data[1][0] = 3; A.data[1][1] = 4; + + Matrix B; + B.data[0][0] = 5; B.data[0][1] = 6; + B.data[1][0] = 7; B.data[1][1] = 8; + + Matrix expected; + expected.data[0][0] = 19; expected.data[0][1] = 22; + expected.data[1][0] = 43; expected.data[1][1] = 50; + + auto result = mat_multiply(A, B); + + std::cout << "A:" << std::endl; + printMatrix(A); + std::cout << "B:" << std::endl; + printMatrix(B); + std::cout << "Expected:" << std::endl; + printMatrix(expected); + std::cout << "Result:" << std::endl; + printMatrix(result); + + bool passed = true; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (std::abs(result.data[i][j] - expected.data[i][j]) > 1e-6) { + passed = false; + } + } + } + + if (passed) { + std::cout << "✓ PASSED" << std::endl; + tests_passed++; + } else { + std::cout << "✗ FAILED" << std::endl; + } + } + + // ==================== TEST 2: Non-Square Matrices ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "TEST 2: Non-Square Matrix Multiplication (3x4 * 4x2)" << std::endl; + std::cout << "========================================" << std::endl; + { + Matrix A; + int val = 1; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 4; j++) { + A.data[i][j] = val++; + } + } + + Matrix B; + val = 1; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 2; j++) { + B.data[i][j] = val++; + } + } + + Matrix expected; + expected.data[0][0] = 50; expected.data[0][1] = 60; + expected.data[1][0] = 114; expected.data[1][1] = 140; + expected.data[2][0] = 178; expected.data[2][1] = 220; + + auto result = mat_multiply(A, B); + + std::cout << "A (3x4):" << std::endl; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 4; j++) { + std::cout << A.data[i][j] << " "; + } + std::cout << std::endl; + } + std::cout << "B (4x2):" << std::endl; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 2; j++) { + std::cout << B.data[i][j] << " "; + } + std::cout << std::endl; + } + std::cout << "Expected (3x2):" << std::endl; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 2; j++) { + std::cout << expected.data[i][j] << " "; + } + std::cout << std::endl; + } + std::cout << "Result:" << std::endl; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 2; j++) { + std::cout << result.data[i][j] << " "; + } + std::cout << std::endl; + } + + bool passed = true; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 2; j++) { + if (std::abs(result.data[i][j] - expected.data[i][j]) > 1e-6) { + passed = false; + } + } + } + + if (passed) { + std::cout << "✓ PASSED" << std::endl; + tests_passed++; + } else { + std::cout << "✗ FAILED" << std::endl; + } + } + + // ==================== TEST 3: Identity Matrix ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "TEST 3: Identity Matrix Multiplication" << std::endl; + std::cout << "========================================" << std::endl; + { + Matrix A; + int val = 1; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + A.data[i][j] = val++; + } + } + + Matrix I; + // Initialize identity matrix + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + I.data[i][j] = (i == j) ? 1.0 : 0.0; + } + } + + auto result = mat_multiply(A, I); + + std::cout << "A * I should equal A" << std::endl; + std::cout << "A:" << std::endl; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + std::cout << A.data[i][j] << " "; + } + std::cout << std::endl; + } + std::cout << "Result:" << std::endl; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + std::cout << result.data[i][j] << " "; + } + std::cout << std::endl; + } + + bool passed = true; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (std::abs(result.data[i][j] - A.data[i][j]) > 1e-6) { + passed = false; + } + } + } + + if (passed) { + std::cout << "✓ PASSED" << std::endl; + tests_passed++; + } else { + std::cout << "✗ FAILED" << std::endl; + } + } + + // ==================== TEST 4: Negative Numbers ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "TEST 4: Matrix with Negative Numbers" << std::endl; + std::cout << "========================================" << std::endl; + { + Matrix A; + A.data[0][0] = 1; A.data[0][1] = -2; + A.data[1][0] = -3; A.data[1][1] = 4; + + Matrix B; + B.data[0][0] = -5; B.data[0][1] = 6; + B.data[1][0] = 7; B.data[1][1] = -8; + + Matrix expected; + expected.data[0][0] = -19; expected.data[0][1] = 22; + expected.data[1][0] = 43; expected.data[1][1] = -50; + + auto result = mat_multiply(A, B); + + std::cout << "A:" << std::endl; + printMatrix(A); + std::cout << "B:" << std::endl; + printMatrix(B); + std::cout << "Expected:" << std::endl; + printMatrix(expected); + std::cout << "Result:" << std::endl; + printMatrix(result); + + bool passed = true; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (std::abs(result.data[i][j] - expected.data[i][j]) > 1e-6) { + passed = false; + } + } + } + + if (passed) { + std::cout << "✓ PASSED" << std::endl; + tests_passed++; + } else { + std::cout << "✗ FAILED" << std::endl; + } + } + + // ==================== TEST 5: Vector Dot Product ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "TEST 5: Vector Dot Product (1x3 * 3x1)" << std::endl; + std::cout << "========================================" << std::endl; + { + Matrix rowVector; + rowVector.data[0][0] = 1; + rowVector.data[0][1] = 2; + rowVector.data[0][2] = 3; + + Matrix colVector; + colVector.data[0][0] = 4; + colVector.data[1][0] = 5; + colVector.data[2][0] = 6; + + auto result = mat_multiply(rowVector, colVector); + + std::cout << "Row vector (1x3): "; + std::cout << rowVector.data[0][0] << " " << rowVector.data[0][1] << " " << rowVector.data[0][2] << std::endl; + std::cout << "Column vector (3x1):" << std::endl; + std::cout << colVector.data[0][0] << std::endl; + std::cout << colVector.data[1][0] << std::endl; + std::cout << colVector.data[2][0] << std::endl; + std::cout << "Result (should be 32): " << result.data[0][0] << std::endl; + + bool passed = std::abs(result.data[0][0] - 32) < 1e-6; + + if (passed) { + std::cout << "✓ PASSED" << std::endl; + tests_passed++; + } else { + std::cout << "✗ FAILED" << std::endl; + } + } + + // ==================== TEST 6: Associativity ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "TEST 6: Associativity (A*B)*C == A*(B*C)" << std::endl; + std::cout << "========================================" << std::endl; + { + Matrix A; + int val = 1; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + A.data[i][j] = val++; + } + } + + Matrix B; + val = 1; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 4; j++) { + B.data[i][j] = val++; + } + } + + Matrix C; + val = 1; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 2; j++) { + C.data[i][j] = val++; + } + } + + auto AB = mat_multiply(A, B); + auto AB_C = mat_multiply(AB, C); + + auto BC = mat_multiply(B, C); + auto A_BC = mat_multiply(A, BC); + + std::cout << "Result of (A*B)*C:" << std::endl; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + std::cout << AB_C.data[i][j] << " "; + } + std::cout << std::endl; + } + std::cout << "Result of A*(B*C):" << std::endl; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + std::cout << A_BC.data[i][j] << " "; + } + std::cout << std::endl; + } + + bool passed = true; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (std::abs(AB_C.data[i][j] - A_BC.data[i][j]) > 1e-6) { + passed = false; + } + } + } + + if (passed) { + std::cout << "✓ PASSED (A*B)*C equals A*(B*C)" << std::endl; + tests_passed++; + } else { + std::cout << "✗ FAILED" << std::endl; + } + } + + // ==================== FINAL RESULTS ==================== + std::cout << "\n========================================" << std::endl; + std::cout << "RESULTS: " << tests_passed << " / " << total_tests << " tests passed" << std::endl; + std::cout << "========================================" << std::endl; + + if (tests_passed == total_tests) { + std::cout << "🎉 All tests passed! Your matrix multiplication is correct! 🎉" << std::endl; + } else { + std::cout << "⚠️ " << (total_tests - tests_passed) << " test(s) failed. Please check your implementation." << std::endl; + } + + return 0; } \ No newline at end of file diff --git a/src/spider/runtime/math/matrix_multiply.exe b/src/spider/runtime/math/matrix_multiply.exe new file mode 100644 index 0000000000000000000000000000000000000000..a822df00039321567e58f0b09c9a273ff113c7eb GIT binary patch literal 145554 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ξe!JrwpYk4d_T|!6>X#<+TyzLh$h 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 vs&50(