GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 12 / 0 / 12
Functions: 100.0% 1 / 0 / 1
Branches: 80.0% 16 / 0 / 20

src/conv/add/naive_mod/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../../math/mul_mod/lib.hpp"
4 #include "../../../util/alias/others/lib.hpp"
5
6 namespace tifa_libs {
7
8 CEXP inline u32 CONV_NAIVE_MOD_THRESHOLD = 16;
9 108 CEXP vecuu conv_naive_mod(spnuu l, spnuu r, u64 mod, u32 ans_size = 0) NE {
10
3/6
✓ Branch 1 taken 108 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 108 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 108 times.
108 retif_((l.empty() || r.empty()) [[unlikely]], {});
11
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 108 times.
108 if (!ans_size) ans_size = u32(l.size() + r.size() - 1);
12 108 vecuu ans(ans_size);
13 108 u32 n = (u32)l.size(), m = (u32)r.size();
14
4/4
✓ Branch 0 taken 42 times.
✓ Branch 1 taken 66 times.
✓ Branch 2 taken 42 times.
✓ Branch 3 taken 66 times.
108 auto &&l_ = n < m ? r : l, &&r_ = n < m ? l : r;
15
2/2
✓ Branch 0 taken 42 times.
✓ Branch 1 taken 66 times.
108 if (n < m) swap(n, m);
16
2/2
✓ Branch 0 taken 336 times.
✓ Branch 1 taken 108 times.
444 flt_ (u32, i, 0, n)
17
2/2
✓ Branch 5 taken 726 times.
✓ Branch 6 taken 336 times.
1062 flt_ (u32, j, 0, min(m, ans_size - i)) ans[i + j] += mul_mod_u(l_[i], r_[j], mod);
18
2/2
✓ Branch 5 taken 438 times.
✓ Branch 6 taken 108 times.
546 for (auto& i : ans) i %= mod;
19 108 return ans;
20 108 }
21
22 } // namespace tifa_libs
23