Adjusted timing test repetition and added QR decomposition
Some checks failed
Merge-Checker / build_and_test (pull_request) Has been cancelled

This commit is contained in:
2025-06-07 10:58:59 -04:00
parent 2a7eb93ebe
commit 719fc4d28a
2 changed files with 22 additions and 14 deletions

View File

@@ -8,6 +8,7 @@
// any other libraries
#include <array>
#include <cmath>
#include <cstdint>
// basically re-run all of the matrix tests with huge matrices and time the
// results.
@@ -29,13 +30,13 @@ TEST_CASE("Timing Tests", "Matrix") {
Matrix<4, 4> mat5{};
SECTION("Addition") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat3 = mat1 + mat2;
}
}
SECTION("Subtraction") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat3 = mat1 - mat2;
}
}
@@ -47,19 +48,19 @@ TEST_CASE("Timing Tests", "Matrix") {
}
SECTION("Scalar Multiplication") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat3 = mat1 * 3;
}
}
SECTION("Element Multiply") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat1.ElementMultiply(mat2, mat3);
}
}
SECTION("Element Divide") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat1.ElementDivide(mat2, mat3);
}
}
@@ -68,52 +69,59 @@ TEST_CASE("Timing Tests", "Matrix") {
// what about matrices of 0,0 or 1,1?
// minor matrix for 2x2 matrix
Matrix<49, 49> minorMat1{};
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat1.MinorMatrix(minorMat1, 0, 0);
}
}
SECTION("Determinant") {
for (uint32_t i{0}; i < 100000; i++) {
for (uint32_t i{0}; i < 1000000; i++) {
float det1 = mat4.Det();
}
}
SECTION("Matrix of Minors") {
for (uint32_t i{0}; i < 100000; i++) {
for (uint32_t i{0}; i < 1000000; i++) {
mat4.MatrixOfMinors(mat5);
}
}
SECTION("Invert") {
for (uint32_t i{0}; i < 100000; i++) {
for (uint32_t i{0}; i < 1000000; i++) {
mat5 = mat4.Invert();
}
};
SECTION("Transpose") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat3 = mat1.Transpose();
}
}
SECTION("Normalize") {
for (uint32_t i{0}; i < 10000; i++) {
for (uint32_t i{0}; i < 100000; i++) {
mat3 = mat1 / mat1.EuclideanNorm();
}
}
SECTION("GET ROW") {
Matrix<1, 50> mat1Rows{};
for (uint32_t i{0}; i < 1000000; i++) {
for (uint32_t i{0}; i < 100000000; i++) {
mat1.GetRow(0, mat1Rows);
}
}
SECTION("GET COLUMN") {
Matrix<50, 1> mat1Columns{};
for (uint32_t i{0}; i < 1000000; i++) {
for (uint32_t i{0}; i < 100000000; i++) {
mat1.GetColumn(0, mat1Columns);
}
}
SECTION("QR Decomposition") {
Matrix<50, 50> Q, R{};
for (uint32_t i{0}; i < 500; i++) {
mat1.QRDecomposition(Q, R);
}
}
}