11#include < gtest/gtest.h>
22#include " SIMDMatrix.h"
33
4- using SIMDMatrix = linear_algebra::SIMDMatrix;
5-
6- TEST (SIMDMatrix_test, IdentityInitialization)
7- {
8- SIMDMatrix mat = SIMDMatrix::Identity (4 );
9-
10- for (size_t i = 0 ; i < 4 ; i++)
11- for (size_t j = 0 ; j < 4 ; j++)
12- {
13- float val = mat.get (i, j);
14- if (i == j)
15- EXPECT_FLOAT_EQ (val, 1 .0f );
16- else
17- EXPECT_FLOAT_EQ (val, 0 .0f );
18- }
19- }
20-
21- TEST (SIMDMatrix_test, IdentityAdditionTest)
22- {
23- SIMDMatrix mat1 = SIMDMatrix::Identity (4 );
24- SIMDMatrix mat2 = SIMDMatrix::Identity (4 );
25-
26- auto result = mat1 + mat2;
4+ static constexpr size_t MATRIX_SIZE_LIMIT = 204 ; // Max. 2MB of heap mem used
275
28- EXPECT_EQ (mat1.getRowCount (), result.getRowCount ());
29- EXPECT_EQ (mat1.getColCount (), result.getColCount ());
30- EXPECT_EQ (mat2.getRowCount (), result.getRowCount ());
31- EXPECT_EQ (mat2.getColCount (), result.getColCount ());
32-
33- for (size_t i = 0 ; i < result.getRowCount (); i++)
34- for (size_t j = 0 ; j < result.getColCount (); j++)
35- {
36- float val = result.get (i, j);
37- if (i == j)
38- EXPECT_FLOAT_EQ (val, 2 .0f );
39- else
40- EXPECT_FLOAT_EQ (val, 0 .0f );
41- }
42- }
43-
44- TEST (SIMDMatrix_test, IdentityScalarMulTest)
45- {
46- SIMDMatrix mat = SIMDMatrix::Identity (4 );
47-
48- auto result = mat * 5 ;
49-
50- EXPECT_EQ (mat.getRowCount (), result.getRowCount ());
51- EXPECT_EQ (mat.getColCount (), result.getColCount ());
52-
53- for (size_t i = 0 ; i < mat.getRowCount (); i++)
54- for (size_t j = 0 ; j < mat.getColCount (); j++)
55- {
56- float val = result.get (i, j);
57- if (i == j)
58- EXPECT_FLOAT_EQ (val, 5 .0f );
59- else
60- EXPECT_FLOAT_EQ (val, 0 .0f );
61- }
62- }
63-
64- TEST (SIMDMatrix_test, IdentityScalarMulTest1)
65- {
66- SIMDMatrix mat = SIMDMatrix::Identity (4 );
67- mat *= 5 ;
68-
69- EXPECT_EQ (mat.getRowCount (), 4 );
70- EXPECT_EQ (mat.getColCount (), 4 );
71-
72- for (size_t i = 0 ; i < mat.getRowCount (); i++)
73- for (size_t j = 0 ; j < mat.getColCount (); j++)
74- {
75- float val = mat.get (i, j);
76- if (i == j)
77- EXPECT_FLOAT_EQ (val, 5 .0f );
78- else
79- EXPECT_FLOAT_EQ (val, 0 .0f );
80- }
81- }
6+ using SIMDMatrix = linear_algebra::SIMDMatrix;
827
83- TEST (SIMDMatrix_test, LargeMatricesScalarMulTest )
8+ TEST (SIMDMatrix, IdentityScalarMultiplication )
849{
85- static constexpr size_t SIZE_LIMIT = 102 ; // k * k * 100 <= 1 048 576 (1mb)
86-
87- for (size_t s = 1 ; s < SIZE_LIMIT; s++)
10+ for (size_t size = 1 ; size <= MATRIX_SIZE_LIMIT; size++)
8811 {
89- SIMDMatrix mat = SIMDMatrix::Identity (s );
12+ SIMDMatrix mat = SIMDMatrix::Identity (size );
9013 mat *= 5 ;
9114
92- EXPECT_EQ (mat.getRowCount (), s);
93- EXPECT_EQ (mat.getColCount (), s);
94-
95- for (size_t i = 0 ; i < mat.getRowCount (); i++)
96- for (size_t j = 0 ; j < mat.getColCount (); j++)
15+ for (size_t i = 0 ; i < size; i++)
16+ for (size_t j = 0 ; j < size; j++)
9717 {
9818 float val = mat.get (i, j);
9919 if (i == j)
@@ -104,26 +24,21 @@ TEST(SIMDMatrix_test, LargeMatricesScalarMulTest)
10424 }
10525}
10626
107- TEST (SIMDMatrix_test, LatgeMatricesAdditionTest )
27+ TEST (SIMDMatrix, IdentityAddition )
10828{
109- static constexpr size_t SIZE_LIMIT = 102 ; // k * k * 100 <= 1'048'576 (1mb)
110-
111- for (size_t s = 1 ; s < SIZE_LIMIT; s++)
29+ for (size_t size = 1 ; size <= MATRIX_SIZE_LIMIT; size++)
11230 {
113- SIMDMatrix mat = SIMDMatrix::Identity (s);
114- mat += mat;
115-
116- EXPECT_EQ (mat.getRowCount (), s);
117- EXPECT_EQ (mat.getColCount (), s);
118-
119- for (size_t i = 0 ; i < mat.getRowCount (); i++)
120- for (size_t j = 0 ; j < mat.getColCount (); j++)
121- {
122- float val = mat.get (i, j);
123- if (i == j)
124- EXPECT_FLOAT_EQ (val, 2 .0f );
125- else
126- EXPECT_FLOAT_EQ (val, 0 .0f );
127- }
31+ SIMDMatrix mat = SIMDMatrix::Identity (size);
32+ mat += SIMDMatrix::Identity (size) * 27 ;
33+
34+ for (size_t i = 0 ; i < size; i++)
35+ for (size_t j = 0 ; j < size; j++)
36+ {
37+ float val = mat.get (i, j);
38+ if (i == j)
39+ EXPECT_FLOAT_EQ (val, 28 .0f );
40+ else
41+ EXPECT_FLOAT_EQ (val, 0 .0f );
42+ }
12843 }
12944}
0 commit comments