src/fps/ds/ntt3/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../../conv/add/ntt3/lib.hpp" | ||
| 4 | #include "../poly_c/lib.hpp" | ||
| 5 | |||
| 6 | namespace tifa_libs { | ||
| 7 | namespace poly3ntt_impl_ { | ||
| 8 | template <class mint, class mint0, class mint1, class mint2> | ||
| 9 | struct cconv_3ntt { | ||
| 10 | using val_t = mint; | ||
| 11 | // clang-format off | ||
| 12 | struct ntt3 { ntt<mint0> _0; ntt<mint1> _1; ntt<mint2> _2; } ccore; | ||
| 13 | // clang-format on | ||
| 14 | static CEXP auto ct_cat = CCORE::NTT3; | ||
| 15 | 167291586 | CEXP void conv(vec<val_t>& l, vec<val_t> CR r, u32 sz = 0) NE { l = conv_3ntt<val_t, mint0, mint1, mint2>(ccore._0, ccore._1, ccore._2, l, r, sz); } | |
| 16 | }; | ||
| 17 | } // namespace poly3ntt_impl_ | ||
| 18 | template <class mint, class mint0, class mint1, class mint2> | ||
| 19 | using poly3ntt = poly_impl_::poly<poly3ntt_impl_::cconv_3ntt<mint, mint0, mint1, mint2>>; | ||
| 20 | |||
| 21 | } // namespace tifa_libs | ||
| 22 |