Skip to main content

Module math

Module math 

Source
Expand description

mathematical datas

ModulesΒ§

arbitrary_mod_binomial πŸ”’
array_vec πŸ”’
binomial_prefix_sum πŸ”’
bit_matrix πŸ”’
bitwise_transform πŸ”’
bitwiseand_convolve πŸ”’
bitwiseor_convolve πŸ”’
bitwisexor_convolve πŸ”’
black_box_matrix πŸ”’
black_box_mint_matrix πŸ”’
convolve_steps πŸ”’
discrete_logarithm πŸ”’
factorial πŸ”’
fast_fourier_transform πŸ”’
fast_prime_mod πŸ”’
floor_sum πŸ”’
formal_power_series πŸ”’
garner πŸ”’
gcd πŸ”’
gcd_convolve πŸ”’
lagrange_interpolation πŸ”’
lcm_convolve πŸ”’
linear_congruence πŸ”’
linear_diophantine πŸ”’
matrix πŸ”’
miller_rabin πŸ”’
min_plus_convolution πŸ”’
Exact min-plus convolution algorithms for structured integer sequences.
mint_fft_convolve πŸ”’
mint_matrix πŸ”’
mod_sqrt πŸ”’
number_theoretic_transform πŸ”’
polynomial πŸ”’
pow_prec πŸ”’
prime πŸ”’
prime_factors πŸ”’
prime_list πŸ”’
prime_table πŸ”’
primitive_root πŸ”’
quotient_array πŸ”’
relaxed_convolution πŸ”’
subset_convolve πŸ”’

StructsΒ§

ArbitraryModBinomial
ArrayVec
BinomialPolynomialPrefixSum
BinomialPrefixSum
BitMatrix
A matrix over GF(2), stored as packed rows.
BitMatrixSolution
BitwiseandConvolve
BitwiseorConvolve
BitwisexorConvolve
EXACT_DIVISION normalizes with division instead of a multiplicative inverse.
BlackBoxMatrixImpl
Convolve
EulerPhiTable
FastPrimeMod
Fast online inverse and power queries for a prime modulus.
FormalPowerSeries
Garner
Garner’s algorithm with precomputation for fixed moduli.
GcdConvolve
LcmConvolve
Matrix
MemorizedFactorial
OnlineSubsetMobiusTransform
OnlineSubsetZetaTransform
OnlineSupersetMobiusTransform
OnlineSupersetZetaTransform
Polynomial
PowPrec
PrimeList
PrimeTable
QuotientArray
store with index ${\lfloor\frac{n}{i}\rfloor \mid i=1,2,\ldots,n}$
RelaxedConvolution
SparseMatrix
SubsetConvolve

EnumsΒ§

ConvolveRealFft

TraitsΒ§

BlackBoxMIntMatrix
BlackBoxMatrix
ConvolveSteps
FormalPowerSeriesCoefficient
FormalPowerSeriesCoefficientSqrt
MIntMatrix
NttReuse
ToArrayVec
ToArrayVecScalar

FunctionsΒ§

bitwise_transform
check_primitive_root
discrete_logarithm
a^x ≑ b (mod n)
discrete_logarithm_prime_mod
divisors
euler_phi
extgcd
extgcd_binary
extgcd_recurse
floor_power_sum
$$\sum_{i=0}^{n-1}x^iy^{\left\lfloor\frac{a\times i+b}{m}\right\rfloor}$$
floor_sum
Sum of Floor of Linear mod 2^64
floor_sum_i64
Sum of Floor of Linear mod 2^64
floor_sum_polynomial
$$\sum_{i=0}^{n-1}i^X\left\lfloor\frac{a\times i+b}{m}\right\rfloor^Y$$
floor_sum_polynomial_i64
$$\sum_{i=l}^{r-1}i^X\left\lfloor\frac{a\times i+b}{m}\right\rfloor^Y$$
floor_sum_range_freq
gcd
binary gcd
gcd_loop
highly_composite_number
[(hcn, #divisor)]
lagrange_interpolation
lagrange_interpolation_polynomial
lcm
miller_rabin
miller_rabin_with_br
min_of_mod_of_linear
$$\min({(a\times i+b)\bmod m\mid0\leq i<n}\cup{m})$$
min_plus_convolution
Computes min-plus convolution after selecting a deterministic exact method from the observed input structure.
min_plus_convolution_bounded_ntt
Computes exact min-plus convolution for small integer value spans using NTT.
min_plus_convolution_concave_both
Computes convolution of two concave inputs from antidiagonal endpoints.
min_plus_convolution_concave_envelope
Computes convolution when one finite input is concave using offline envelopes.
min_plus_convolution_convex_divide_and_conquer
Computes convolution when one input is convex using monotone divide and conquer.
min_plus_convolution_convex_merge
Computes convolution of two convex inputs by merging their slope sequences.
min_plus_convolution_convex_smawk
Computes convolution when one input is convex using SMAWK in O(n + m).
min_plus_convolution_linear
Computes convolution when at least one input is finite and linear.
min_plus_convolution_monotone_runs
Computes convolution of same-direction monotone inputs from equal-value runs.
min_plus_convolution_naive
Computes min-plus convolution by enumerating all input pairs.
min_plus_convolution_near_convex_scan
Computes exact near-convex convolution by scanning witness-relevant pairs.
min_plus_convolution_piecewise_linear
Computes convolution using the input with fewer maximal linear pieces.
min_plus_convolution_sparse
Computes min-plus convolution by enumerating finite input pairs only.
min_plus_convolution_with_squared_distance
Computes min-plus convolution with squared distance in linear time.
modinv
modinv_extgcd_binary
0 < a < p, gcd(a, p) == 1, p is prime > 2
modinv_recurse
moebius
g(d) = Sigma mu(d) * f(n/d)
prime_factors
prime_factors_flatten
primitive_root
solve_linear_congruence
return: (y,z)
solve_linear_diophantine
Solve ax + by = c
solve_simultaneous_linear_congruence
return: (y,z)
with_prime_list

Type AliasesΒ§

Convolve998244353
Fps
Fps998244353
MIntConvolve
Raw transforms require each integer coefficient reconstructed by CRT to be below the product of the three NTT moduli. convolve splits products exceeding this bound.
U64Convolve
Convolution modulo 2^64. Multiply only freshly transformed operands; reconstruct and transform again before multiplying another factor.