maomao90's Library
A C++20 library for competitive programming.
Loading...
Searching...
No Matches
poly.hpp File Reference
#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.

Classes

struct  maomao90::internal::poly::ntt::ntt_info< mint, g >
 
struct  maomao90::internal::type_traits::is_valid_setting< T, poly_setting >
 
struct  maomao90::internal::type_traits::is_valid_setting< T, PolySetting::ntt >
 
struct  maomao90::internal::type_traits::is_valid_setting< T, PolySetting::fft_sqrt >
 
struct  maomao90::internal::type_traits::is_valid_setting< T, PolySetting::fft >
 
struct  maomao90::internal::type_traits::is_valid_setting< complex< T >, PolySetting::fft_complex >
 
struct  maomao90::Poly< T, poly_setting, >
 

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