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/40tifa_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/40tifa_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/40tifa_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/40tifa_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/28tifa_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/28tifa_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/28tifa_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/28tifa_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/28tifa_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/28tifa_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/28tifa_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 |