GCC Code Coverage Report


Directory: ./
File: tasks/sosnina_a_matrix_mult_horizontal/seq/src/ops_seq.cpp
Date: 2026-01-27 01:59:34
Exec Total Coverage
Lines: 22 22 100.0%
Functions: 5 5 100.0%
Branches: 17 24 70.8%

Line Branch Exec Source
1 #include "sosnina_a_matrix_mult_horizontal/seq/include/ops_seq.hpp"
2
3 #include <cstddef>
4 #include <utility>
5 #include <vector>
6
7 namespace sosnina_a_matrix_mult_horizontal {
8
9 512 SosninaAMatrixMultHorizontalSEQ::SosninaAMatrixMultHorizontalSEQ(InTypeTriple in) : input_(std::move(in)) {
10 SetTypeOfTask(GetStaticTypeOfTask());
11 512 GetOutput() = std::vector<std::vector<double>>();
12 512 }
13
14
1/2
✓ Branch 0 taken 512 times.
✗ Branch 1 not taken.
512 bool SosninaAMatrixMultHorizontalSEQ::ValidationImpl() {
15 const auto &matrix_a = input_.first;
16 const auto &matrix_b = input_.second;
17
18
2/4
✓ Branch 0 taken 512 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 512 times.
512 if (matrix_a.empty() || matrix_b.empty()) {
19 return false;
20 }
21
22 size_t cols_a = matrix_a[0].size();
23
2/2
✓ Branch 0 taken 480 times.
✓ Branch 1 taken 512 times.
992 for (size_t i = 1; i < matrix_a.size(); i++) {
24
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 480 times.
480 if (matrix_a[i].size() != cols_a) {
25 return false;
26 }
27 }
28
29 size_t cols_b = matrix_b[0].size();
30
2/2
✓ Branch 0 taken 480 times.
✓ Branch 1 taken 512 times.
992 for (size_t i = 1; i < matrix_b.size(); i++) {
31
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 480 times.
480 if (matrix_b[i].size() != cols_b) {
32 return false;
33 }
34 }
35
36 512 return cols_a == matrix_b.size();
37 }
38
39
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 512 times.
512 bool SosninaAMatrixMultHorizontalSEQ::PreProcessingImpl() {
40 GetOutput().clear();
41 512 return true;
42 }
43
44 512 bool SosninaAMatrixMultHorizontalSEQ::RunImpl() {
45 const auto &matrix_a = input_.first;
46 const auto &matrix_b = input_.second;
47
48 size_t rows_a = matrix_a.size();
49 size_t cols_a = matrix_a[0].size();
50 size_t cols_b = matrix_b[0].size();
51
52 auto &output = GetOutput();
53
1/2
✓ Branch 2 taken 512 times.
✗ Branch 3 not taken.
512 output = std::vector<std::vector<double>>(rows_a, std::vector<double>(cols_b, 0.0));
54
55 // Умножение матриц
56
2/2
✓ Branch 0 taken 992 times.
✓ Branch 1 taken 512 times.
1504 for (size_t i = 0; i < rows_a; i++) {
57
2/2
✓ Branch 0 taken 1984 times.
✓ Branch 1 taken 992 times.
2976 for (size_t k = 0; k < cols_a; k++) {
58 1984 double aik = matrix_a[i][k];
59
2/2
✓ Branch 0 taken 4352 times.
✓ Branch 1 taken 1984 times.
6336 for (size_t j = 0; j < cols_b; j++) {
60 4352 output[i][j] += aik * matrix_b[k][j];
61 }
62 }
63 }
64
65 512 return true;
66 }
67
68 512 bool SosninaAMatrixMultHorizontalSEQ::PostProcessingImpl() {
69 512 return true;
70 }
71
72 } // namespace sosnina_a_matrix_mult_horizontal
73