GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 10 / 0 / 10
Functions: 100.0% 1 / 0 / 1
Branches: 77.3% 17 / 0 / 22

src/nt/residue/jacobi/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../../util/alias/num/lib.hpp"
4
5 namespace tifa_libs {
6
7 276 CEXP int jacobi_sym(u64 a, u64 p) NE {
8
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 276 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 276 times.
276 retif_((assert(p & 1); !a) [[unlikely]], 0);
9 276 int s = 1, _ = 0;
10
2/2
✓ Branch 0 taken 560 times.
✓ Branch 1 taken 91 times.
651 while (a > 1) {
11
3/6
✓ Branch 0 taken 560 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 560 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 560 times.
560 if (a == p || !a || p < 2) return 0;
12
6/6
✓ Branch 1 taken 339 times.
✓ Branch 2 taken 221 times.
✓ Branch 3 taken 204 times.
✓ Branch 4 taken 135 times.
✓ Branch 5 taken 95 times.
✓ Branch 6 taken 109 times.
560 if (_ = std::countr_zero(a); ((p - 1) & 7) && ((p + 1) & 7) && (_ & 1)) s = -s;
13
2/2
✓ Branch 0 taken 185 times.
✓ Branch 1 taken 375 times.
560 if ((a >>= _) == 1) break;
14
2/2
✓ Branch 0 taken 90 times.
✓ Branch 1 taken 285 times.
375 if ((((p - 1) & 7) * (a - 1)) & 7) s = -s;
15 375 swap(a, p %= a);
16 }
17 276 return s;
18 }
19
20 } // namespace tifa_libs
21