| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include <cmath> | ||
| 4 | #include <cstddef> | ||
| 5 | #include <string> | ||
| 6 | #include <tuple> | ||
| 7 | #include <vector> | ||
| 8 | |||
| 9 | #include "task/include/task.hpp" | ||
| 10 | |||
| 11 | namespace morozova_s_strassen_multiplication { | ||
| 12 | using InType = std::vector<double>; | ||
| 13 | using OutType = std::vector<double>; | ||
| 14 | using TestType = std::tuple<int, std::string>; | ||
| 15 | using BaseTask = ppc::task::Task<InType, OutType>; | ||
| 16 | |||
| 17 |
24/48✗ Branch 1 not taken.
✓ Branch 2 taken 208 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 26 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 234 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 234 times.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 4 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 4 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 4 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 4 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 4 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 4 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 4 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 4 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 4 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 4 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 4 times.
✗ Branch 43 not taken.
✓ Branch 44 taken 4 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 4 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 4 times.
✗ Branch 49 not taken.
|
1042 | struct Matrix { |
| 18 | std::vector<double> data; | ||
| 19 | int size; | ||
| 20 | |||
| 21 |
1/2✓ Branch 1 taken 286 times.
✗ Branch 2 not taken.
|
286 | Matrix() : size(0) {} |
| 22 | |||
| 23 |
12/26✓ Branch 6 taken 26 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 26 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 26 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 26 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 26 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 26 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 26 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 4 times.
✗ Branch 28 not taken.
✓ Branch 31 taken 60 times.
✗ Branch 32 not taken.
✓ Branch 35 taken 4 times.
✗ Branch 36 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 43 taken 28 times.
✗ Branch 44 not taken.
✓ Branch 47 taken 44 times.
✗ Branch 48 not taken.
|
2080 | explicit Matrix(int n) : data(static_cast<size_t>(n) * static_cast<size_t>(n), 0.0), size(n) {} |
| 24 | |||
| 25 | double &operator()(int i, int j) { | ||
| 26 |
2/2✓ Branch 0 taken 566436 times.
✓ Branch 1 taken 1768 times.
|
5943508 | return data[(i * size) + j]; |
| 27 | } | ||
| 28 | const double &operator()(int i, int j) const { | ||
| 29 |
5/10✓ Branch 0 taken 174832 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 87416 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 87416 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 174832 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 43708 times.
✗ Branch 9 not taken.
|
120031196 | return data[(i * size) + j]; |
| 30 | } | ||
| 31 | |||
| 32 | bool operator==(const Matrix &other) const { | ||
| 33 | if (size != other.size) { | ||
| 34 | return false; | ||
| 35 | } | ||
| 36 | const double eps = 1e-6; | ||
| 37 | for (size_t i = 0; i < data.size(); ++i) { | ||
| 38 | if (std::abs(data[i] - other.data[i]) > eps) { | ||
| 39 | return false; | ||
| 40 | } | ||
| 41 | } | ||
| 42 | return true; | ||
| 43 | } | ||
| 44 | }; | ||
| 45 | |||
| 46 | } // namespace morozova_s_strassen_multiplication | ||
| 47 |