src/nt/proot/uint/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../pfactors/lib.hpp" | ||
| 4 | #include "../is/lib.hpp" | ||
| 5 | |||
| 6 | namespace tifa_libs { | ||
| 7 | |||
| 8 | 1370 | CEXP u64 proot(u64 m) NE { | |
| 9 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1368 times.
|
1370 | retif_((m == 2) [[unlikely]], 1); |
| 10 |
4/4✓ Branch 0 taken 1366 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1364 times.
|
1368 | retif_((m == 3 || m == 5) [[unlikely]], 2); |
| 11 |
6/10✓ Branch 0 taken 1364 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1364 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1364 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1204 times.
✓ Branch 7 taken 160 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1204 times.
|
1364 | if (m == 104857601 || m == 167772161 || m == 469762049 || m == 998244353 || m == 1004535809) return 3; |
| 12 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1204 times.
|
1204 | if (m == 1012924417) return 5; |
| 13 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1204 times.
|
1204 | if (m == 754974721) return 11; |
| 14 | 1204 | const auto pf = pfactors(m - 1); | |
| 15 | 1204 | for (u64 g = 2;; ++g) | |
| 16 |
2/2✓ Branch 3 taken 1204 times.
✓ Branch 4 taken 45468 times.
|
46672 | if (is_proot(g, m, begin(pf), end(pf))) return g; |
| 17 | 1204 | } | |
| 18 | |||
| 19 | } // namespace tifa_libs | ||
| 20 |