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 |