GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 30 / 0 / 30
Functions: 100.0% 20 / 0 / 20
Branches: 100.0% 10 / 0 / 10

src/nt/lsieve/func/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../../util/alias/others/lib.hpp"
4
5 namespace tifa_libs {
6
7 struct ls_mpf {
8 vecu mpf;
9
10 protected:
11 22 CEXPE ls_mpf(u32 n) NE : mpf(n) {
12
2/2
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 2 times.
11 if (n > 1) mpf[1] = 1;
13 11 }
14 3832 CEXP void prime(u32 p) NE { mpf[p] = p; }
15 14978 CEXP void coprime(u32 i, u32 j) NE { mpf[i * j] = j; }
16 9282 CEXP void not_coprime(u32 i, u32 j) NE { mpf[i * j] = j; }
17 };
18 struct ls_phi {
19 vecu phi;
20
21 protected:
22 598 CEXPE ls_phi(u32 n) NE : phi(n) {
23
2/2
✓ Branch 0 taken 279 times.
✓ Branch 1 taken 20 times.
299 if (n > 1) phi[1] = 1;
24 299 }
25 1817974 CEXP void prime(u32 p) NE { phi[p] = p - 1; }
26 10598834 CEXP void coprime(u32 i, u32 j) NE { phi[i * j] = phi[i] * (j - 1); }
27 6118260 CEXP void not_coprime(u32 i, u32 j) NE { phi[i * j] = phi[i] * j; }
28 };
29 struct ls_tau {
30 vecu tau;
31
32 protected:
33 vecu pc;
34 44 CEXPE ls_tau(u32 n) NE : tau(n), pc(n, 1) {
35
2/2
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 2 times.
11 if (n > 1) tau[1] = 1;
36 11 }
37 3832 CEXP void prime(u32 p) NE { tau[p] = 2; }
38 14978 CEXP void coprime(u32 i, u32 j) NE { tau[i * j] = tau[i] * 2; }
39 9282 CEXP void not_coprime(u32 i, u32 j) NE { tau[i * j] = tau[i] + tau[i] / (pc[i * j] = pc[i] + 1); }
40 };
41 struct ls_mu {
42 veci mu;
43
44 protected:
45 66 CEXPE ls_mu(u32 n) NE : mu(n) {
46
2/2
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 2 times.
33 if (n > 1) mu[1] = 1;
47 33 }
48 7542414 CEXP void prime(u32 p) NE { mu[p] = -1; }
49 67982331 CEXP void coprime(u32 i, u32 j) NE { mu[i * j] = -mu[i]; }
50 37213956 CEXP void not_coprime(u32, u32) NE {}
51 };
52 struct ls_sigma {
53 vecuu sigma;
54
55 protected:
56 vecuu pw;
57 44 CEXPE ls_sigma(u32 n) NE : sigma(n), pw(n) {
58
2/2
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 2 times.
11 if (n > 1) sigma[1] = 1;
59 11 }
60 3832 CEXP void prime(u32 p) NE { pw[p] = (u64)p * p, sigma[p] = p + 1; }
61 14978 CEXP void coprime(u32 i, u32 j) NE { pw[i * j] = (u64)j * j, sigma[i * j] = sigma[i] * (j + 1); }
62 9282 CEXP void not_coprime(u32 i, u32 j) NE { sigma[i * j] = sigma[i] * ((pw[i * j] = pw[i] * j) - 1) / (pw[i] - 1); }
63 };
64
65 } // namespace tifa_libs
66