1use crate::algebra::{
4 AddMulOperation, Associative, Field, Group, Invertible, Magma, Monoid, Ring, SemiRing, Unital,
5};
6use crate::array;
7use crate::num::{
8 BarrettReduction, Complex, MInt, MIntBase, MIntConvert, One, Unsigned, Wrapping, Zero,
9 montgomery,
10};
11use crate::tools::{AssociatedValue, PartialIgnoredOrd, Xorshift};
12
13#[codesnip::entry("berlekamp_massey")]
14pub use self::berlekamp_massey::berlekamp_massey;
15#[codesnip::entry("bitwise_transform")]
16pub use self::bitwise_transform::bitwise_transform;
17#[codesnip::entry("BitwiseandConvolve")]
18pub use self::bitwiseand_convolve::BitwiseandConvolve;
19#[codesnip::entry("BitwiseorConvolve")]
20pub use self::bitwiseor_convolve::BitwiseorConvolve;
21#[codesnip::entry("BitwisexorConvolve")]
22pub use self::bitwisexor_convolve::BitwisexorConvolve;
23#[codesnip::entry("ConvolveSteps")]
24pub use self::convolve_steps::ConvolveSteps;
25#[codesnip::entry("discrete_logarithm")]
26pub use self::discrete_logarithm::{discrete_logarithm, discrete_logarithm_prime_mod};
27pub use self::factorial::*;
28#[codesnip::entry("fast_fourier_transform")]
29pub use self::fast_fourier_transform::ConvolveRealFft;
30#[codesnip::entry("floor_sum")]
31pub use self::floor_sum::{
32 floor_sum, floor_sum_i64, floor_sum_polynomial, floor_sum_polynomial_i64, floor_sum_range_freq,
33};
34#[codesnip::entry("FormalPowerSeries")]
35pub use self::formal_power_series::{
36 FormalPowerSeries, FormalPowerSeriesCoefficient, FormalPowerSeriesCoefficientSqrt, Fps,
37 Fps998244353,
38};
39pub use self::gcd::*;
40#[codesnip::entry("GcdConvolve")]
41pub use self::gcd_convolve::GcdConvolve;
42#[codesnip::entry("lagrange_interpolation")]
43pub use self::lagrange_interpolation::{lagrange_interpolation, lagrange_interpolation_polynomial};
44#[codesnip::entry("LcmConvolve")]
45pub use self::lcm_convolve::LcmConvolve;
46#[codesnip::entry("linear_congruence")]
47pub use self::linear_congruence::{solve_linear_congruence, solve_simultaneous_linear_congruence};
48#[codesnip::entry("Matrix")]
49pub use self::matrix::Matrix;
50#[codesnip::entry("miller_rabin")]
51pub use self::miller_rabin::{miller_rabin, miller_rabin_with_br};
52#[codesnip::entry("NumberTheoreticTransform")]
53pub use self::number_theoretic_transform::{Convolve, Convolve998244353, MIntConvolve};
54pub use self::polynomial::*;
55pub use self::prime::*;
56#[codesnip::entry("prime_factors")]
57pub use self::prime_factors::{divisors, prime_factors, prime_factors_flatten};
58#[codesnip::entry("PrimeList")]
59pub use self::prime_list::{PrimeList, with_prime_list};
60#[codesnip::entry("PrimeTable")]
61pub use self::prime_table::PrimeTable;
62#[codesnip::entry("primitive_root")]
63pub use self::primitive_root::{check_primitive_root, primitive_root};
64#[codesnip::entry("QuotientArray")]
65pub use self::quotient_array::QuotientArray;
66#[codesnip::entry("SubsetConvolve")]
67pub use self::subset_convolve::SubsetConvolve;
68
69#[cfg_attr(nightly, codesnip::entry("berlekamp_massey", include("zero_one")))]
70mod berlekamp_massey;
71#[cfg_attr(nightly, codesnip::entry("bitwise_transform"))]
72mod bitwise_transform;
73#[cfg_attr(
74 nightly,
75 codesnip::entry("BitwiseandConvolve", include("_zeta_transform", "bitwise_transform"))
76)]
77mod bitwiseand_convolve;
78#[cfg_attr(
79 nightly,
80 codesnip::entry("BitwiseorConvolve", include("_zeta_transform", "bitwise_transform"))
81)]
82mod bitwiseor_convolve;
83#[cfg_attr(
84 nightly,
85 codesnip::entry("BitwisexorConvolve", include("_zeta_transform", "bitwise_transform"))
86)]
87mod bitwisexor_convolve;
88#[cfg_attr(nightly, codesnip::entry("ConvolveSteps"))]
89mod convolve_steps;
90#[cfg_attr(
91 nightly,
92 codesnip::entry(
93 "discrete_logarithm",
94 include(
95 "BarrettReduction",
96 "lcm",
97 "modinv",
98 "primitive_root",
99 "PrimeList",
100 "Xorshift"
101 )
102 )
103)]
104mod discrete_logarithm;
105mod factorial;
106#[cfg_attr(
107 nightly,
108 codesnip::entry(
109 "fast_fourier_transform",
110 include("Complex", "AssociatedValue", "ConvolveSteps")
111 )
112)]
113mod fast_fourier_transform;
114#[cfg_attr(
115 nightly,
116 codesnip::entry("floor_sum", include("algebra", "ring", "integer", "BarrettReduction"))
117)]
118mod floor_sum;
119#[cfg_attr(
120 nightly,
121 codesnip::entry(
122 "FormalPowerSeries",
123 include(
124 "NumberTheoreticTransform",
125 "montgomery",
126 "mod_sqrt",
127 "factorial",
128 "PartialIgnoredOrd",
129 "berlekamp_massey"
130 )
131 )
132)]
133mod formal_power_series;
134mod gcd;
135#[cfg_attr(
136 nightly,
137 codesnip::entry("GcdConvolve", include("_zeta_transform", "PrimeList"))
138)]
139mod gcd_convolve;
140#[cfg_attr(
141 nightly,
142 codesnip::entry("lagrange_interpolation", include("factorial", "MIntBase"))
143)]
144mod lagrange_interpolation;
145#[cfg_attr(
146 nightly,
147 codesnip::entry("LcmConvolve", include("_zeta_transform", "PrimeList"))
148)]
149mod lcm_convolve;
150#[cfg_attr(nightly, codesnip::entry(include("integer")))]
151mod linear_congruence;
152#[cfg_attr(nightly, codesnip::entry("Matrix", include("zero_one")))]
153mod matrix;
154#[cfg_attr(nightly, codesnip::entry("miller_rabin", include("BarrettReduction")))]
155mod miller_rabin;
156#[cfg_attr(nightly, codesnip::entry("mod_sqrt", include("MIntBase")))]
157mod mod_sqrt;
158#[cfg_attr(
159 nightly,
160 codesnip::entry(
161 "NumberTheoreticTransform",
162 include("montgomery", "ConvolveSteps", "avx_helper")
163 )
164)]
165mod number_theoretic_transform;
166mod polynomial;
167mod prime;
168#[cfg_attr(
169 nightly,
170 codesnip::entry("prime_factors", include("miller_rabin", "gcd"))
171)]
172mod prime_factors;
173#[cfg_attr(nightly, codesnip::entry("PrimeList"))]
174mod prime_list;
175#[cfg_attr(nightly, codesnip::entry("PrimeTable"))]
176mod prime_table;
177#[cfg_attr(nightly, codesnip::entry("primitive_root", include("prime_factors")))]
178mod primitive_root;
179#[cfg_attr(
180 nightly,
181 codesnip::entry("QuotientArray", include("algebra", "ring", "PrimeList"))
182)]
183mod quotient_array;
184#[cfg_attr(
185 nightly,
186 codesnip::entry("SubsetConvolve", include("BitwiseorConvolve"))
187)]
188mod subset_convolve;
189
190#[codesnip::entry("_zeta_transform", include("algebra", "ring", "ConvolveSteps"))]
191#[codesnip::skip]
192#[allow(dead_code)]
193#[doc(hidden)]
194enum ZetaTransformSnippets {}