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