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/12void 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/12void 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/12void 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/12void 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/12void 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/12void 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 |