GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 91 / 0 / 91
Functions: 100.0% 15 / 0 / 15
Branches: 100.0% 32 / 0 / 32

src/comb/seq/fact/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../../math/mul_mod/lib.hpp"
4 #include "../../../util/alias/others/lib.hpp"
5
6 namespace tifa_libs {
7
8 // i! from i=0..n-1
9 2523 CEXP vecuu gen_fact(u32 n, u64 mod) NE {
10
2/2
✓ Branch 0 taken 85 times.
✓ Branch 1 taken 2438 times.
2608 retif_((n <= 1) [[unlikely]], vecuu(n, 1));
11 2438 vecuu ans(n);
12 2438 ans[0] = ans[1] = 1;
13
2/2
✓ Branch 3 taken 450510593 times.
✓ Branch 4 taken 2438 times.
450513031 flt_ (u32, i, 2, n) ans[i] = mul_mod_u(ans[i - 1], i, mod);
14 2438 return ans;
15 2438 }
16 // i! from i=0..n-1
17 template <class mint>
18 434 CEXP vec<mint> gen_fact(u32 n) NE {
19 434 vec<mint> ans(n);
20 434 auto _ = gen_fact(n, mint::mod());
21
28/28
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<14l> > >(unsigned int):
✓ Branch 3 taken 1511122 times.
✓ Branch 4 taken 11 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(unsigned int):
✓ Branch 3 taken 4533366 times.
✓ Branch 4 taken 33 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<17l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<17l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<17l> > >(unsigned int):
✓ Branch 3 taken 2400038 times.
✓ Branch 4 taken 16 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(unsigned int):
✓ Branch 3 taken 11466770 times.
✓ Branch 4 taken 82 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<14l> > >(unsigned int):
✓ Branch 3 taken 1511122 times.
✓ Branch 4 taken 11 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(unsigned int):
✓ Branch 3 taken 4533366 times.
✓ Branch 4 taken 33 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<17l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<17l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<17l> > >(unsigned int):
✓ Branch 3 taken 2400038 times.
✓ Branch 4 taken 16 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<70l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<70l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<70l> > >(unsigned int):
✓ Branch 3 taken 1001000 times.
✓ Branch 4 taken 2 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<14l> > >(unsigned int):
✓ Branch 3 taken 1511122 times.
✓ Branch 4 taken 11 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(unsigned int):
✓ Branch 3 taken 4533366 times.
✓ Branch 4 taken 33 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<17l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<17l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<17l> > >(unsigned int):
✓ Branch 3 taken 2400038 times.
✓ Branch 4 taken 16 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<69l> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<69l> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<69l> > >(unsigned int):
✓ Branch 3 taken 1001000 times.
✓ Branch 4 taken 2 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(unsigned int):
✓ Branch 3 taken 12467770 times.
✓ Branch 4 taken 84 times.
std::vector<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, std::allocator<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > > tifa_libs::gen_fact<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(unsigned int):
✓ Branch 3 taken 12467770 times.
✓ Branch 4 taken 84 times.
63738322 flt_ (u32, i, 0, n) ans[i] = _[i];
22 434 return ans;
23 434 }
24
25 } // namespace tifa_libs
26