feanor_math/algorithms/mod.rs
1/// Contains basic algorithms for implementing operations on arbitrary-precision
2/// integers. Unless you are implementing your own big integer type, you should use
3/// [`crate::integer::BigIntRing`] instead.
4pub mod bigint_ops;
5/// Contains Buchberger's algorithm for computing Groebner basis.
6pub mod buchberger;
7/// Contains [`convolution::ConvolutionAlgorithm`], an abstraction for algorithms
8/// for computing convolutions, together with various implementations.
9pub mod convolution;
10/// Contains [`cyclotomic::cyclotomic_polynomial()`] for computing cyclotomic polynomials.
11pub mod cyclotomic;
12/// Contains various algorithms for computing discrete logarithms over generic monoids.
13pub mod discrete_log;
14/// Contains an implementation of Lenstra's ECM factoring algorithm.
15pub mod ec_factor;
16/// Contains multiple variants of the Extended Euclidean Algorithm.
17pub mod eea;
18/// Contains an implementation of the Sieve of Erathostenes, for enumerating
19/// prime number up to a certain bound.
20pub mod erathostenes;
21/// Contains basic algorithms for implementing operations on ring extensions. Unless
22/// you are implementing your own extension ring type, you should use the operations
23/// through [`crate::rings::extension::FreeAlgebra`] instead.
24pub mod extension_ops;
25/// Contains [`fft::FFTAlgorithm`], an abstraction for algorithms
26/// for computing FFTs over various rings, together with different implementations.
27pub mod fft;
28/// Contains an implementation of the Fincke-Pohst lattice point enumeration algorithm.
29pub mod fincke_pohst;
30/// Contains algorithms for computing the Galois group and Galois closure of a
31/// [`crate::rings::extension::number_field::NumberField`].
32pub mod galois;
33/// Contains an implementation of the bisection method for computing roots, but
34/// working with integers only.
35pub mod int_bisect;
36/// Contains an implementation of integer factoring and related utilities, delegating
37/// to [`ec_factor`].
38pub mod int_factor;
39/// Contains algorithms for polynomial interpolation.
40pub mod interpolate;
41/// Contains [`linsolve::LinSolveRing`] for rings over which we can solve linear systems.
42///
43/// Additionally contains most of the algorithms for actually solving linear systems over
44/// various rings, including partial smith normal forms.
45pub mod linsolve;
46/// Contains an implementation of the Lenstra-Lenstra-Lovasz algorithm for lattice basis
47/// reduction.
48pub mod lll;
49/// Contains [`matmul::MatmulAlgorithm`], an abstraction for algorithms
50/// for computing matrix multiplication, together with various implementations.
51pub mod matmul;
52/// Contains an implementation of the Miller-Rabin probabilistic primality test.
53pub mod miller_rabin;
54pub mod multipointeval;
55/// Contains an implementation of the Newton-Raphson method for approximating roots of
56/// polynomials (and more generally, "well-behaved" functions).
57pub mod newton;
58/// Contains [`poly_div::poly_div_rem()`] for computing polynomial division. In most cases,
59/// you will instead use this functionality through
60/// [`crate::pid::EuclideanRing::euclidean_div_rem()`].
61pub mod poly_div;
62/// Contains [`poly_factor::FactorPolyField`] for fields over which we can factor polynomials.
63///
64/// Additionally contains most of the algorithms for factoring polynomials over various fields
65/// and rings.
66pub mod poly_factor;
67/// Contains [`poly_gcd::PolyTFracGCDRing`] for rings over which we can compute polynomial gcds and
68/// related operations, modulo multiplication by non-zero divisors.
69pub mod poly_gcd;
70pub mod qr;
71/// Contains algorithms for rational reconstruction, i.e. find a small rational number `x`
72/// from its reduction modulo some `n` (coprime to the denominator of `x`).
73pub mod rational_reconstruction;
74/// Contains algorithms for computing resultants.
75pub mod resultant;
76/// Contains implementations to extend [`crate::rings::extension::number_field::NumberField`]s by
77/// adjoining additional roots of polynomials.
78pub mod splitting_field;
79/// Contains [`sqr_mul::generic_abs_square_and_multiply()`] and other functions
80/// for computing a power of an element in a generic monoid.
81pub mod sqr_mul;
82/// Contains algorithms to find roots of unity in finite fields.
83pub mod unity_root;
84/// Contains algorithms for computing divisions in ring extensions for which standard methods
85/// are not sufficient.
86pub mod zpe_extension;