GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 77.8% 336 / 0 / 432
Functions: 100.0% 68 / 0 / 68
Branches: 64.3% 229 / 0 / 356

src/math/fact/helper/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../../util/alias/others/lib.hpp"
4 #include "../../../util/traits/math/lib.hpp"
5
6 namespace tifa_libs {
7
8 template <mint_c mint>
9 struct fact_helper {
10 using val_t = mint;
11 static CEXP u32 DEFAULT_MAX = 10'000'001;
12 9900099288 static CEXP u64 mod() NE { return val_t::mod(); }
13 static inline vec<val_t> fact, ifact;
14
15 fact_helper() = delete;
16
17 // ensure fact.size() >= sz
18 1577038063 static CEXP void ensure(u32 sz = DEFAULT_MAX) NE {
19
28/40
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::ensure(unsigned int):
✓ Branch 5 taken 187133076 times.
✓ Branch 6 taken 227 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::ensure(unsigned int):
✓ Branch 5 taken 561399228 times.
✓ Branch 6 taken 371 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >::ensure(unsigned int):
✓ Branch 5 taken 9995910 times.
✓ Branch 6 taken 530 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<16l> > >::ensure(unsigned int):
✓ Branch 5 taken 29987730 times.
✓ Branch 6 taken 78 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 236 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 187 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 205 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 464 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::ensure(unsigned int):
✓ Branch 5 taken 187133076 times.
✓ Branch 6 taken 227 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::ensure(unsigned int):
✓ Branch 5 taken 561399228 times.
✓ Branch 6 taken 351 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >::ensure(unsigned int):
✓ Branch 5 taken 9995910 times.
✓ Branch 6 taken 490 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<16l> > >::ensure(unsigned int):
✓ Branch 5 taken 29987730 times.
✓ Branch 6 taken 78 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 20 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 149 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::ensure(unsigned int):
✗ Branch 5 not taken.
✓ Branch 6 taken 248 times.
1577038063 if (sz = max(2_u32, min((u32)mod(), sz)); sz <= fact.size()) return;
20 6175 u32 pre = (u32)fact.size();
21 6175 fact.resize(sz), ifact.resize(sz);
22
21/40
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::ensure(unsigned int):
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::ensure(unsigned int):
✓ Branch 0 taken 227 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::ensure(unsigned int):
✓ Branch 0 taken 371 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >::ensure(unsigned int):
✓ Branch 0 taken 530 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<16l> > >::ensure(unsigned int):
✓ Branch 0 taken 78 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 0 taken 740 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 0 taken 236 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::ensure(unsigned int):
✓ Branch 0 taken 187 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > >::ensure(unsigned int):
✓ Branch 0 taken 205 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >::ensure(unsigned int):
✓ Branch 0 taken 464 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::ensure(unsigned int):
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::ensure(unsigned int):
✓ Branch 0 taken 227 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::ensure(unsigned int):
✓ Branch 0 taken 351 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >::ensure(unsigned int):
✓ Branch 0 taken 490 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<16l> > >::ensure(unsigned int):
✓ Branch 0 taken 78 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::ensure(unsigned int):
✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 0 taken 740 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 0 taken 149 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 0 taken 740 times.
✗ Branch 1 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 0 taken 237 times.
✓ Branch 1 taken 11 times.
6175 if (pre < 2) pre = 2, fact[0] = fact[1] = ifact[0] = ifact[1] = 1;
23
40/40
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::ensure(unsigned int):
✓ Branch 4 taken 70034313 times.
✓ Branch 5 taken 47 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::ensure(unsigned int):
✓ Branch 4 taken 118860329 times.
✓ Branch 5 taken 227 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::ensure(unsigned int):
✓ Branch 4 taken 665372744 times.
✓ Branch 5 taken 371 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >::ensure(unsigned int):
✓ Branch 4 taken 1351269531 times.
✓ Branch 5 taken 530 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<16l> > >::ensure(unsigned int):
✓ Branch 4 taken 453809988 times.
✓ Branch 5 taken 78 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 4 taken 1184295408 times.
✓ Branch 5 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 4 taken 866449129 times.
✓ Branch 5 taken 236 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::ensure(unsigned int):
✓ Branch 4 taken 118826009 times.
✓ Branch 5 taken 187 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > >::ensure(unsigned int):
✓ Branch 4 taken 409999795 times.
✓ Branch 5 taken 205 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >::ensure(unsigned int):
✓ Branch 4 taken 991999549 times.
✓ Branch 5 taken 464 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::ensure(unsigned int):
✓ Branch 4 taken 70034313 times.
✓ Branch 5 taken 47 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::ensure(unsigned int):
✓ Branch 4 taken 118860329 times.
✓ Branch 5 taken 227 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::ensure(unsigned int):
✓ Branch 4 taken 561372751 times.
✓ Branch 5 taken 351 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >::ensure(unsigned int):
✓ Branch 4 taken 1143269545 times.
✓ Branch 5 taken 490 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<16l> > >::ensure(unsigned int):
✓ Branch 4 taken 453809988 times.
✓ Branch 5 taken 78 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::ensure(unsigned int):
✓ Branch 4 taken 81279855 times.
✓ Branch 5 taken 20 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 4 taken 1184295408 times.
✓ Branch 5 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 4 taken 380449164 times.
✓ Branch 5 taken 149 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 4 taken 1184295408 times.
✓ Branch 5 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 4 taken 866449188 times.
✓ Branch 5 taken 248 times.
12275038919 flt_ (u32, i, pre, sz) fact[i] = fact[i - 1] * i;
24 6175 ifact.back() = fact.back().inv();
25
40/40
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::ensure(unsigned int):
✓ Branch 4 taken 70034270 times.
✓ Branch 5 taken 47 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::ensure(unsigned int):
✓ Branch 4 taken 118860106 times.
✓ Branch 5 taken 227 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::ensure(unsigned int):
✓ Branch 4 taken 665372386 times.
✓ Branch 5 taken 371 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >::ensure(unsigned int):
✓ Branch 4 taken 1351269002 times.
✓ Branch 5 taken 530 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<16l> > >::ensure(unsigned int):
✓ Branch 4 taken 453809913 times.
✓ Branch 5 taken 78 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 4 taken 1184294668 times.
✓ Branch 5 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 4 taken 866448893 times.
✓ Branch 5 taken 236 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::ensure(unsigned int):
✓ Branch 4 taken 118825822 times.
✓ Branch 5 taken 187 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > >::ensure(unsigned int):
✓ Branch 4 taken 409999590 times.
✓ Branch 5 taken 205 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >::ensure(unsigned int):
✓ Branch 4 taken 991999085 times.
✓ Branch 5 taken 464 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::ensure(unsigned int):
✓ Branch 4 taken 70034270 times.
✓ Branch 5 taken 47 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::ensure(unsigned int):
✓ Branch 4 taken 118860106 times.
✓ Branch 5 taken 227 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::ensure(unsigned int):
✓ Branch 4 taken 561372413 times.
✓ Branch 5 taken 351 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >::ensure(unsigned int):
✓ Branch 4 taken 1143269056 times.
✓ Branch 5 taken 490 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<16l> > >::ensure(unsigned int):
✓ Branch 4 taken 453809913 times.
✓ Branch 5 taken 78 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::ensure(unsigned int):
✓ Branch 4 taken 81279838 times.
✓ Branch 5 taken 20 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 4 taken 1184294668 times.
✓ Branch 5 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 4 taken 380449015 times.
✓ Branch 5 taken 149 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::ensure(unsigned int):
✓ Branch 4 taken 1184294668 times.
✓ Branch 5 taken 740 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::ensure(unsigned int):
✓ Branch 4 taken 866448941 times.
✓ Branch 5 taken 248 times.
12275032798 for (u32 i = sz - 1; i > pre; --i) ifact[i - 1] = ifact[i] * i;
26 }
27
28 449266951 static CEXP val_t get_fact(u64 n) NE {
29
14/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 62377727 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50532559 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 6333297 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12536 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50520058 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50532559 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 62377727 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50532559 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 6333297 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 8649397 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12536 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50520023 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12536 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50520140 times.
449266951 if (n >= mod()) [[unlikely]]
30 return 0;
31
18/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_fact(unsigned long):
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 62377720 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50532559 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 6333297 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12536 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 50520051 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50532559 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_fact(unsigned long):
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 62377720 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50532559 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 6333297 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 8649397 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12536 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 50520023 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12536 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 50520133 times.
449266951 if (fact.empty()) [[unlikely]]
32 28 ensure();
33
18/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_fact(unsigned long):
✓ Branch 1 taken 62377696 times.
✓ Branch 2 taken 31 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_fact(unsigned long):
✓ Branch 1 taken 50532559 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_fact(unsigned long):
✓ Branch 1 taken 6333297 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 12536 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 50520027 times.
✓ Branch 2 taken 31 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_fact(unsigned long):
✓ Branch 1 taken 50532559 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_fact(unsigned long):
✓ Branch 1 taken 62377696 times.
✓ Branch 2 taken 31 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_fact(unsigned long):
✓ Branch 1 taken 50532559 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_fact(unsigned long):
✓ Branch 1 taken 6333297 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_fact(unsigned long):
✓ Branch 1 taken 8649397 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 12536 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 50520023 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 12536 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 1 taken 50520109 times.
✓ Branch 2 taken 31 times.
449266951 if (n < fact.size()) [[likely]]
34 449266827 return fact[n];
35 124 val_t _ = fact.back() * n;
36
8/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_fact(unsigned long):
✓ Branch 3 taken 17980979599 times.
✓ Branch 4 taken 31 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 3 taken 17980979599 times.
✓ Branch 4 taken 31 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_fact(unsigned long):
✓ Branch 3 taken 17980979599 times.
✓ Branch 4 taken 31 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_fact(unsigned long):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_fact(unsigned long):
✓ Branch 3 taken 17980979599 times.
✓ Branch 4 taken 31 times.
71923918520 flt_ (u64, i, fact.size(), n) _ *= i;
37 124 return _;
38 }
39 898533556 static CEXP val_t get_ifact(u64 n) NE {
40
14/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 124755384 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101065107 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12666594 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 25061 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101040046 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101065107 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 124755384 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101065107 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12666594 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 17298794 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 25061 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101040046 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 25061 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101040210 times.
898533556 if (n >= mod()) [[unlikely]]
41 return 0;
42
14/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 124755384 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101065107 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12666594 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 25061 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101040046 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101065107 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 124755384 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101065107 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 12666594 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 17298794 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 25061 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101040046 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 25061 times.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_ifact(unsigned long):
✗ Branch 1 not taken.
✓ Branch 2 taken 101040210 times.
898533556 if (fact.empty()) [[unlikely]]
43 ensure();
44
14/28
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<12l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 124755384 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 101065107 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 12666594 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<1000000007ul> > >::get_ifact(unsigned long):
✓ Branch 1 taken 25061 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >::get_ifact(unsigned long):
✓ Branch 1 taken 101040046 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 101065107 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<12l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 124755384 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 101065107 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 12666594 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<8l> > >::get_ifact(unsigned long):
✓ Branch 1 taken 17298794 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<1000000007ul> > >::get_ifact(unsigned long):
✓ Branch 1 taken 25061 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >::get_ifact(unsigned long):
✓ Branch 1 taken 101040046 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<1000000007ul> > >::get_ifact(unsigned long):
✓ Branch 1 taken 25061 times.
✗ Branch 2 not taken.
tifa_libs::fact_helper<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >::get_ifact(unsigned long):
✓ Branch 1 taken 101040210 times.
✗ Branch 2 not taken.
898533556 if (n < ifact.size()) [[likely]]
45 898533556 return ifact[n];
46 return get_fact(n).inv();
47 }
48 };
49
50 } // namespace tifa_libs
51