src/math/iroot/kth/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../../math/qpow/basic/lib.hpp" | ||
| 4 | |||
| 5 | namespace tifa_libs { | ||
| 6 | |||
| 7 | 6803985 | CEXP u64 ikth_root(u64 a, u64 k) NE { | |
| 8 |
5/6✗ Branch 0 not taken.
✓ Branch 1 taken 6803985 times.
✓ Branch 3 taken 6546267 times.
✓ Branch 4 taken 257718 times.
✓ Branch 5 taken 60001 times.
✓ Branch 6 taken 6486266 times.
|
6803985 | if (assert(k); a <= 1 || k == 1) return a; |
| 9 |
2/2✓ Branch 0 taken 51857 times.
✓ Branch 1 taken 6434409 times.
|
6486266 | if (k >= 64) return 1; |
| 10 | 6434409 | u64 n = (u64)powl(a, 1.l / k); | |
| 11 |
2/2✓ Branch 1 taken 241781 times.
✓ Branch 2 taken 6434409 times.
|
6676190 | while (qpow<u128>(n, k) > a) --n; |
| 12 |
2/2✓ Branch 1 taken 4532 times.
✓ Branch 2 taken 6434409 times.
|
6438941 | while (qpow<u128>(n + 1, k) <= a) ++n; |
| 13 | 6434409 | return n; | |
| 14 | } | ||
| 15 | |||
| 16 | } // namespace tifa_libs | ||
| 17 |