GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 78 / 0 / 78
Functions: 100.0% 12 / 0 / 12
Branches: 91.7% 66 / 0 / 72

src/conv/trans/wht/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../../util/alias/others/lib.hpp"
4
5 namespace tifa_libs {
6
7 template <class T>
8 234 CEXP void wht(vec<T>& f, u32 n = 0) NE {
9
12/12
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 26 times.
✓ Branch 1 taken 13 times.
void tifa_libs::wht<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 26 times.
✓ Branch 1 taken 13 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 26 times.
✓ Branch 1 taken 13 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 26 times.
✓ Branch 1 taken 13 times.
void tifa_libs::wht<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 26 times.
✓ Branch 1 taken 13 times.
void tifa_libs::wht<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 26 times.
✓ Branch 1 taken 13 times.
234 if (!n) n = (u32)f.size();
10
12/12
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 402 times.
✓ Branch 1 taken 39 times.
void tifa_libs::wht<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 402 times.
✓ Branch 1 taken 39 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 402 times.
✓ Branch 1 taken 39 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 402 times.
✓ Branch 1 taken 39 times.
void tifa_libs::wht<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 402 times.
✓ Branch 1 taken 39 times.
void tifa_libs::wht<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 402 times.
✓ Branch 1 taken 39 times.
2646 for (u32 i = 1; i < n; i *= 2)
11
12/12
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 207527622 times.
✓ Branch 1 taken 402 times.
void tifa_libs::wht<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 207527622 times.
✓ Branch 1 taken 402 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 207527622 times.
✓ Branch 1 taken 402 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 207527622 times.
✓ Branch 1 taken 402 times.
void tifa_libs::wht<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 207527622 times.
✓ Branch 1 taken 402 times.
void tifa_libs::wht<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 207527622 times.
✓ Branch 1 taken 402 times.
1245168144 flt_ (u32, j, 0, n)
12
12/12
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 103763811 times.
✓ Branch 1 taken 103763811 times.
void tifa_libs::wht<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 103763811 times.
✓ Branch 1 taken 103763811 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 103763811 times.
✓ Branch 1 taken 103763811 times.
void tifa_libs::wht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 103763811 times.
✓ Branch 1 taken 103763811 times.
void tifa_libs::wht<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 103763811 times.
✓ Branch 1 taken 103763811 times.
void tifa_libs::wht<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 103763811 times.
✓ Branch 1 taken 103763811 times.
1245165732 if (!(j & i)) {
13 622582866 const T x = f[j], y = f[j | i];
14 622582866 f[j] = x + y, f[j | i] = x - y;
15 }
16 234 }
17 template <class T>
18 78 CEXP void iwht(vec<T>& f, u32 n = 0) NE {
19
6/12
void tifa_libs::iwht<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 13 times.
✗ Branch 1 not taken.
void tifa_libs::iwht<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 13 times.
✗ Branch 1 not taken.
void tifa_libs::iwht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 13 times.
✗ Branch 1 not taken.
void tifa_libs::iwht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 0 taken 13 times.
✗ Branch 1 not taken.
void tifa_libs::iwht<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 13 times.
✗ Branch 1 not taken.
void tifa_libs::iwht<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 13 times.
✗ Branch 1 not taken.
78 if (!n) n = (u32)f.size();
20 78 if CEXP (wht(f, n); std::is_integral_v<T>)
21 for (auto& x : f) x /= n;
22 else
23
12/12
void tifa_libs::iwht<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 9 taken 3506543 times.
✓ Branch 10 taken 13 times.
void tifa_libs::iwht<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 9 taken 3506543 times.
✓ Branch 10 taken 13 times.
void tifa_libs::iwht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 9 taken 3506543 times.
✓ Branch 10 taken 13 times.
void tifa_libs::iwht<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<15l> > >(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> > > >&, unsigned int):
✓ Branch 9 taken 3506543 times.
✓ Branch 10 taken 13 times.
void tifa_libs::iwht<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 9 taken 3506543 times.
✓ Branch 10 taken 13 times.
void tifa_libs::iwht<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 9 taken 3506543 times.
✓ Branch 10 taken 13 times.
21039336 for (const T _ = T(1) / T(n); auto& x : f) x *= _;
24 78 }
25
26 } // namespace tifa_libs
27