GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 12 / 0 / 12
Functions: 100.0% 2 / 1 / 3
Branches: 50.0% 2 / 0 / 4

src/nt/inverse/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../gl/inv_gcd/lib.hpp"
4
5 namespace tifa_libs {
6
7 // simple but slower: inv(n, mod) -> 1 < n ? mod - inv(mod % n, n) * mod / n : 1;
8 template <uint_c T, uint_c U>
9 2558989587 CEXP U inverse(T n, U mod) NE {
10 2558989587 auto [g, x] = inv_gcd(U(n % mod), mod);
11
2/4
unsigned int tifa_libs::inverse<unsigned int, unsigned int>(unsigned int, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 1447272605 times.
unsigned long tifa_libs::inverse<unsigned long, unsigned long>(unsigned long, unsigned long):
✗ Branch 0 not taken.
✓ Branch 1 taken 565929067 times.
2558989587 assert(g == 1);
12 2558989587 return x;
13 }
14
15 } // namespace tifa_libs
16