Lattice Tester Online Documentation unknown
Software Package For Testing The Uniformity Of Integral Lattices In The Real Space
Loading...
Searching...
No Matches
ReducerStatic.h File Reference

Static functions to reduce a lattice basis via LLL and BKZ. More...

Namespaces

namespace  LatticeTester
 LatticeTester namespace.
 

Functions

template<typename Int , typename Real >
static void LatticeTester::redLLL (IntMat &basis, double delta=0.99999, long dim=0, RealVec *sqlen=0)
 This function uses the NTL implementation of the LLL reduction algorithm with factor delta, presented in [9] (see also [7]).
 
template<typename Int >
static void LatticeTester::redLLLExact (IntMat &basis, double delta=0.99999)
 This static function implements an exact algorithm from NTL to perform the original LLL reduction.
 
template<typename Int , typename Real >
static void LatticeTester::redBKZ (IntMat &basis, double delta=0.99999, int64_t blocksize=10, long prune=0, long dim=0, RealVec *sqlen=0)
 This calls the NTL implementation of the floating point version of the BKZ reduction algorithm presented in [9], with reduction factor delta, block size blocksize, pruning parameter ‘prune’; see [7].
 
template<typename Int , typename Real >
void LatticeTester::redLLL (IntMat &basis, double delta, long dim, RealVec *sqlen)
 This function uses the NTL implementation of the LLL reduction algorithm with factor delta, presented in [9] (see also [7]).
 
template<>
void LatticeTester::redLLL (NTL::Mat< int64_t > &basis, double delta, long dim, NTL::Vec< double > *sqlen)
 
template<>
void LatticeTester::redLLL (NTL::Mat< NTL::ZZ > &basis, double delta, long dim, NTL::Vec< double > *sqlen)
 
template<>
void LatticeTester::redLLL (NTL::Mat< NTL::ZZ > &basis, double delta, long dim, NTL::Vec< xdouble > *sqlen)
 
template<>
void LatticeTester::redLLL (NTL::Mat< NTL::ZZ > &basis, double delta, long dim, NTL::Vec< quad_float > *sqlen)
 
template<>
void LatticeTester::redLLL (NTL::Mat< NTL::ZZ > &basis, double delta, long dim, NTL::Vec< NTL::RR > *sqlen)
 
template<typename Int >
void LatticeTester::redLLLExact (IntMat &basis, double delta)
 This static function implements an exact algorithm from NTL to perform the original LLL reduction.
 
template<>
void LatticeTester::redLLLExact (NTL::Mat< NTL::ZZ > &basis, double delta)
 
template<typename Int , typename Real >
void LatticeTester::redBKZ (IntMat &basis, double delta, long blocksize, long prune, long dim, RealVec *sqlen)
 
template<>
void LatticeTester::redBKZ (NTL::Mat< int64_t > &basis, double delta, long blocksize, long prune, long dim, NTL::Vec< double > *sqlen)
 
template<>
void LatticeTester::redBKZ (NTL::Mat< NTL::ZZ > &basis, double delta, long blocksize, long prune, long dim, NTL::Vec< double > *sqlen)
 
template<>
void LatticeTester::redBKZ (NTL::Mat< NTL::ZZ > &basis, double delta, long blocksize, long prune, long dim, NTL::Vec< xdouble > *sqlen)
 
template<>
void LatticeTester::redBKZ (NTL::Mat< NTL::ZZ > &basis, double delta, long blocksize, long prune, long dim, NTL::Vec< quad_float > *sqlen)
 
template<>
void LatticeTester::redBKZ (NTL::Mat< NTL::ZZ > &basis, double delta, long blocksize, long prune, long dim, NTL::Vec< NTL::RR > *sqlen)
 

Detailed Description

Static functions to reduce a lattice basis via LLL and BKZ.

These functions are wrappers to slightly modified versions of the NTL functions described at https://libntl.org/doc/LLL.cpp.html . They do not require the creation of an object like in ReducerBB. They take an IntMat object that contains a basis and return the reduced basis in the same object. In our versions, the basis can occupy only part of the IntMat object so we can use the same object for several bases of various sizes, the basis entries can be of either ZZ or int64_t type, the shortest basis vector is always placed in the first row, and the squared vector lengths are also returned in a vector. The norm to measure the vector lengths is always the Euclidean norm. The computations can be done either in double or in RR for the real numbers.