maomao90's Library
A C++20 library for competitive programming.
|
#include <algorithm>
#include <array>
#include <bit>
#include <complex>
#include <type_traits>
#include <vector>
#include "library/internal/concepts.hpp"
#include "library/internal/math.hpp"
#include "library/math/extended_gcd.hpp"
#include "library/math/modint.hpp"
Go to the source code of this file.
Namespaces | |
namespace | maomao90 |
namespace | maomao90::internal |
namespace | maomao90::internal::poly |
namespace | maomao90::internal::poly::ntt |
namespace | maomao90::internal::poly::fft |
namespace | maomao90::internal::type_traits |
Enumerations | |
enum | maomao90::PolySetting { maomao90::ntt , maomao90::fft , maomao90::fft_sqrt , maomao90::fft_complex } |
Functions | |
template<class T> | |
vector< T > | maomao90::internal::poly::convolution_naive (const vector< T > &a, const vector< T > &b) |
template<StaticModInt mint> | |
void | maomao90::internal::poly::ntt::butterfly (vector< mint > &a) |
template<StaticModInt mint> | |
void | maomao90::internal::poly::ntt::butterfly_inv (vector< mint > &a) |
template<StaticModInt mint> | |
vector< mint > | maomao90::internal::poly::ntt::convolution_ntt (vector< mint > a, vector< mint > b) |
template<StaticModInt mint> | |
vector< mint > | maomao90::internal::poly::ntt::convolution (const vector< mint > &a, const vector< mint > &b) |
template<int mod, class T> requires is_integral_v<T> | |
vector< T > | maomao90::internal::poly::ntt::convolution (const vector< T > &a, const vector< T > &b) |
vector< long long > | maomao90::internal::poly::ntt::convolution_ll (const vector< long long > &a, const vector< long long > &b) |
template<ModInt mint> | |
vector< mint > | maomao90::internal::poly::ntt::convolution_arb_mod (const vector< mint > &a, const vector< mint > &b) |
template<typename T> requires is_floating_point_v<T> | |
void | maomao90::internal::poly::fft::fft (vector< complex< T > > &a) |
template<typename T> requires is_arithmetic_v<T> | |
vector< T > | maomao90::internal::poly::fft::convolution (const vector< T > &ta, const vector< T > &tb) |
template<concepts::broadly_integral T> | |
vector< T > | maomao90::internal::poly::fft::convolution_sqrt (const vector< T > &a, const vector< T > &b) |
template<ModInt mint> | |
vector< mint > | maomao90::internal::poly::fft::convolution_arb_mod (const vector< mint > &a, const vector< mint > &b) |
template<typename T> requires is_floating_point_v<T> | |
vector< complex< T > > | maomao90::internal::poly::fft::convolution_complex (const vector< complex< T > > &a, const vector< complex< T > > &b) |
Variables | |
template<typename T, PolySetting poly_setting> | |
constexpr bool | maomao90::internal::type_traits::is_valid_setting_v = is_valid_setting<T, poly_setting>::value |