GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 25 / 0 / 25
Functions: 100.0% 2 / 0 / 2
Branches: 72.7% 32 / 0 / 44

test/cpv_local/nt/carmichael.cpp
Line Branch Exec Source
1 // competitive-verifier: STANDALONE
2
3 #include "../../../src/nt/carmichael/lib.hpp"
4 #include "../../../src/nt/euler_phi/lib.hpp"
5 #include "../../../src/util/rand/lib.hpp"
6 #include "../base.hpp"
7
8 using namespace tifa_libs;
9
10 rand_gen<u64> g;
11 10 void test() {
12
2/2
✓ Branch 0 taken 320 times.
✓ Branch 1 taken 10 times.
330 flt_ (u64, i, 0, 32) {
13 320 u64 n = 1_u64 << i;
14 320 auto pfe = pf_exp(n);
15 320 auto lambda = carmichael(pfe);
16 320 auto phi = euler_phi(n, pfe);
17
4/6
✓ Branch 0 taken 290 times.
✓ Branch 1 taken 30 times.
✓ Branch 3 taken 290 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 290 times.
✗ Branch 10 not taken.
320 if (i > 2) check(lambda * 2, phi, check_param(i));
18
2/4
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 30 times.
✗ Branch 8 not taken.
30 else check(lambda, phi, check_param(i));
19 320 }
20 10 g.seed((u64)std::chrono::steady_clock::now().time_since_epoch().count());
21
2/2
✓ Branch 0 taken 1342 times.
✓ Branch 1 taken 10 times.
1352 flt_ (u32, i, 0, 4) {
22 1342 u64 n = g();
23 1342 auto pfe = pf_exp(n);
24
13/16
✓ Branch 1 taken 201 times.
✓ Branch 2 taken 1141 times.
✓ Branch 4 taken 177 times.
✓ Branch 5 taken 24 times.
✓ Branch 7 taken 36 times.
✓ Branch 8 taken 141 times.
✓ Branch 10 taken 16 times.
✓ Branch 11 taken 20 times.
✓ Branch 13 taken 24 times.
✓ Branch 14 taken 16 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 24 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1302 times.
✓ Branch 22 taken 40 times.
1342 if (pfe.size() > 2 || (pfe.size() == 2 && (pfe[0].first > 2 || pfe[0].second > 1)) || (pfe.size() == 1 && pfe[0].first == 2 && pfe[0].second > 2)) {
25 1302 --i;
26 1302 continue;
27 }
28 40 auto lambda = carmichael(pfe);
29 40 auto phi = euler_phi(n, pfe);
30
2/4
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 40 times.
✗ Branch 8 not taken.
40 check(lambda, phi, check_param(n));
31
2/2
✓ Branch 1 taken 40 times.
✓ Branch 2 taken 1302 times.
1342 }
32 10 }
33
34 1 int main() {
35
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 time.
11 for (int i = 1; i <= 10; ++i) {
36
3/6
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
10 timer_(test());
37 }
38 1 }
39