GCC Code Coverage Report


Directory: ./
File: src/util/numerical/linalg.test.cc
Date: 2025-09-01 06:19:01
Exec Total Coverage
Lines: 47 47 100.0%
Functions: 12 12 100.0%
Branches: 55 77 71.4%

Line Branch Exec Source
1 #include "na64util/numerical/linalg.hh"
2
3 #include <gtest/gtest.h>
4
5 namespace na64dp {
6 namespace test {
7
8 using namespace util;
9
10 8 TEST( ArtTrack, unitMatrixMult ) {
11 // simple unit matrices
12 2 Matrix3 unitMx = {{ {1, 0, 0}
13 , {0, 1, 0}
14 , {0, 0, 1}
15 }};
16 2 Vec3 v = {{1, 2, 3}};
17 //
18
1/1
✓ Branch 1 taken 1 times.
2 Vec3 vv = unitMx*v;
19
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ(vv.r[0], 1);
20
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ(vv.r[1], 2);
21
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ(vv.r[2], 3);
22 //
23 2 Matrix3 m = {{ {1, 2, 3}
24 , {4, 5, 6}
25 , {7, 8, 9}
26 }};
27
1/1
✓ Branch 1 taken 1 times.
2 Matrix3 rm = unitMx*m;
28
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ( rm.cm[0][0], 1 );
29
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ( rm.cm[1][1], 5 );
30
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ( rm.cm[2][2], 9 );
31
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_EQ( rm.cm[1][2], 6 );
32 2 }
33
34 8 TEST( ArtTrack, rotationMatrix ) {
35 // simple rotation matrices
36
1/1
✓ Branch 1 taken 1 times.
2 Matrix3 mOx = arbitrary_rotation_matrix<Float_t>({{1, 0, 0}}, M_PI/2)
37
1/1
✓ Branch 1 taken 1 times.
2 , mOy = arbitrary_rotation_matrix<Float_t>({{0, 1, 0}}, M_PI/2)
38
1/1
✓ Branch 1 taken 1 times.
2 , mOz = arbitrary_rotation_matrix<Float_t>({{0, 0, 1}}, M_PI/2)
39 ;
40 2 Vec3 v = {{1, 0, 0}};
41 // We're testing very simple rotation here
42 {
43
1/1
✓ Branch 1 taken 1 times.
2 Vec3 vv = mOx*v;
44
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[0], 1, 1e-6 );
45
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[1], 0, 1e-6 );
46
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[2], 0, 1e-6 );
47 }
48 {
49
1/1
✓ Branch 1 taken 1 times.
2 Vec3 vv = mOz*v;
50
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[0], 0, 1e-6 );
51
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[1], 1, 1e-6 );
52
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[2], 0, 1e-6 );
53
1/1
✓ Branch 1 taken 1 times.
2 vv = mOy*vv;
54
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[0], 0, 1e-6 );
55
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[1], 1, 1e-6 );
56
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( vv.r[2], 0, 1e-6 );
57 }
58 2 }
59
60 8 TEST( ArtTrack, unitInvertedIsUnit ) {
61 2 Matrix3 unit{{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}};
62
1/1
✓ Branch 1 taken 1 times.
2 Matrix3 unitInv = unit.inv();
63
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( unitInv.cm[0][0], 1, 1e-6 );
64
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( unitInv.cm[1][1], 1, 1e-6 );
65
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( unitInv.cm[2][2], 1, 1e-6 );
66 2 }
67
68 8 TEST( ArtTrack, testInversion ) {
69 2 Matrix3 m{{ {1, 2, 3}
70 , {0, 1, 4}
71 , {5, 6, 0}
72 }};
73
74
1/1
✓ Branch 1 taken 1 times.
2 Matrix3 mi = m.inv();
75
1/1
✓ Branch 1 taken 1 times.
2 Matrix3 unit = m*mi;
76
77
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( unit.cm[0][0], 1, 1e-6 );
78
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( unit.cm[1][1], 1, 1e-6 );
79
2/3
✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
2 EXPECT_NEAR( unit.cm[2][2], 1, 1e-6 );
80 2 }
81
82 } // namespace ::arttrack::test
83 } // namespace arttrack
84