|
Macaulay2 Engine
|
Lenstra-Lenstra-Lovász integer lattice basis reduction, in place on a MutableMatrix. More...
Go to the source code of this file.
Classes | |
| class | LLLoperations |
| Static-method namespace for the LLL lattice-basis reduction algorithm operating on a MutableMatrix. More... | |
Lenstra-Lenstra-Lovász integer lattice basis reduction, in place on a MutableMatrix.
Declares LLLoperations, a static-only collection that runs the classical Lenstra-Lenstra-Lovász (1982) algorithm on the columns of a MutableMatrix over ZZ. The output is an LLL-reduced basis of the same lattice: each Gram-Schmidt projection coefficient is bounded by 1/2 and consecutive squared GS lengths satisfy the Lovász condition with parameter α = alphaTop/alphaBottom. Closer to 1 means stronger reduction and slower runtime.
The class is intentionally objectless — REDI is the size-reduction step, Lovasz is the swap-condition check, SWAPI does the column swap, and initializeLLL / doLLL (with doLLL's nsteps argument) coordinate them while a companion lambda matrix carries the integer Gram-Schmidt numerators. Reduction happens in place, which is why the routines work on MutableMatrix rather than the immutable Matrix. The packaged top-level LLL(M, U, threshold) is surfaced to M2 by rawLLL in interface/mutable-matrix.cpp; faster external backends are available through fplll-interface.hpp and ntl-interface.hppntl_LLL.
Definition in file LLL.hpp.