GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 72 / 0 / 72
Functions: 100.0% 3 / 0 / 3
Branches: 95.0% 57 / 0 / 60

src/conv/add/ntt_large/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../dft/lib.hpp"
4
5 namespace tifa_libs {
6
7 template <ntt_c NTT_t, std::same_as<TPN NTT_t::data_t> mint>
8 162 CEXP vec<mint> conv_ntt_large(NTT_t& ntt, vec<mint> l, vec<mint> r, u32 ans_size = 0) NE {
9 162 cu32 n = (u32)l.size(), m = (u32)r.size(), len = NTT_t::max_size;
10
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 23 times.
162 if (n + m - 1 <= len) return conv_dft<NTT_t, mint>(ntt, l, r, ans_size);
11
3/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
69 if (!ans_size) ans_size = n + m - 1;
12 69 ntt.bzr(len);
13 69 vvec<mint> as, bs;
14
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 2 taken 83 times.
✓ Branch 3 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 2 taken 83 times.
✓ Branch 3 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 2 taken 83 times.
✓ Branch 3 taken 23 times.
318 for (u32 i = 0; i < l.size(); i += len / 2) {
15 498 vec<mint> v{begin(l) + i, begin(l) + min(i + len / 2, (u32)l.size())};
16 249 ntt.dif(v), as.push_back(v);
17 }
18
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 2 taken 81 times.
✓ Branch 3 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 2 taken 81 times.
✓ Branch 3 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 2 taken 81 times.
✓ Branch 3 taken 23 times.
312 for (u32 i = 0; i < r.size(); i += len / 2) {
19 486 vec<mint> v{begin(r) + i, begin(r) + min(i + len / 2, (u32)r.size())};
20 243 ntt.dif(v), bs.push_back(v);
21 }
22 138 vvec<mint> cs(as.size() + bs.size() - 1, vec<mint>(len));
23
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 83 times.
✓ Branch 2 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 83 times.
✓ Branch 2 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 83 times.
✓ Branch 2 taken 23 times.
318 flt_ (u32, i, 0, (u32)as.size())
24
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 292 times.
✓ Branch 2 taken 83 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 292 times.
✓ Branch 2 taken 83 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 292 times.
✓ Branch 2 taken 83 times.
1125 flt_ (u32, j, 0, (u32)bs.size())
25
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 8 taken 2449473536 times.
✓ Branch 9 taken 292 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 8 taken 2449473536 times.
✓ Branch 9 taken 292 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 8 taken 2449473536 times.
✓ Branch 9 taken 292 times.
7348421484 flt_ (u32, k, 0, len) cs[i + j][k] += as[i][k] * bs[j][k];
26
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 6 taken 141 times.
✓ Branch 7 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 6 taken 141 times.
✓ Branch 7 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 6 taken 141 times.
✓ Branch 7 taken 23 times.
492 for (auto& v : cs) ntt.dit(v);
27 69 vec<mint> c(l.size() + r.size() - 1);
28
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 141 times.
✓ Branch 2 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 141 times.
✓ Branch 2 taken 23 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 1 taken 141 times.
✓ Branch 2 taken 23 times.
492 flt_ (u32, i, 0, (u32)cs.size()) {
29 423 cu32 ofs = len / 2 * i;
30
6/6
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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 6 taken 1155375525 times.
✓ Branch 7 taken 141 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 6 taken 1155375525 times.
✓ Branch 7 taken 141 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::conv_ntt_large<tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >(tifa_libs::ntt<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, 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> > > >, 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> > > >, unsigned int):
✓ Branch 6 taken 1155375525 times.
✓ Branch 7 taken 141 times.
3466126998 flt_ (u32, j, 0, min(len, (u32)c.size() - ofs)) c[j + ofs] += cs[i][j];
31 }
32 69 c.resize(ans_size);
33 69 return c;
34 69 }
35 template <class NTT_t, std::same_as<TPN NTT_t::data_t> mint, class T = u64>
36 CEXP vec<mint> conv_ntt_large_u64(NTT_t& ntt, vec<T> CR l, vec<T> CR r, u32 ans_size = 0) NE {
37 if (!ans_size) ans_size = u32(l.size() + r.size() - 1);
38 vec<mint> l_, r_;
39 for (l_.reserve(l.size()); auto i : l) l_.push_back(i);
40 for (r_.reserve(r.size()); auto i : r) r_.push_back(i);
41 return conv_ntt_large(ntt, l_, r_, ans_size);
42 }
43
44 } // namespace tifa_libs
45