Lattice Tester Online Documentation 0.1.0-861
Software Package For Testing The Uniformity Of Integral Lattices In The Real Space
Loading...
Searching...
No Matches
LLL_RR_lt.cc File Reference
#include <NTL/tools.h>
#include <NTL/fileio.h>
#include <NTL/vector.h>
#include <NTL/matrix.h>
#include <NTL/ZZ.h>
#include <NTL/RR.h>
#include <NTL/vec_RR.h>
#include <NTL/mat_ZZ.h>
#include <NTL/mat_RR.h>
#include <NTL/LLL.h>
#include <latticetester/FlexTypes.h>
#include <latticetester/LLL_lt.h>

Macros

#define NTL_LLL_RR_lt__H
 

Functions

static void init_red_fudge_RR ()
 
static void inc_red_fudge_RR ()
 
void InnerProductV (ZZ &prod, const NTL::Vec< ZZ > &a, const NTL::Vec< ZZ > &b, long n)
 
static void InnerProductR (RR &xx, const vec_RR &a, const vec_RR &b, long n)
 
static void RowTransform (vec_ZZ &A, vec_ZZ &B, const ZZ &MU1, long n)
 
static void RowTransform2 (vec_ZZ &A, vec_ZZ &B, const ZZ &MU1, long n)
 
void ComputeGS_RR_lt (const mat_ZZ &B, mat_RR &B1, mat_RR &mu, vec_RR &b, vec_RR &c, long k, long n, const RR &bound, long st, vec_RR &buf, const RR &bound2)
 
static long ll_LLL_RR_lt (mat_ZZ &B, const RR &delta, mat_RR &B1, mat_RR &mu, vec_RR &b, vec_RR &c, long m, long n, long init_k, long &quit)
 
long LLL_RR_lt (mat_ZZ &B, double delta, long m, long n, vec_RR *sqlen)
 
static void ComputeBKZConstant_RR (long beta, long p)
 
static void ComputeBKZThresh_RR (RR *c, long beta)
 
long BKZ_RR_lt (mat_ZZ &BB, const RR &delta, long beta, long prune, long m, long n, vec_RR *sqlen)
 
long BKZ_RR_lt (mat_ZZ &BB, double delta, long beta, long prune, long m, long n, vec_RR *sqlen)
 These two functions are wrappers of BKZ_RR in NTL, with the same modifications as in LLL_RR_lt above.
 

Variables

static NTL_START_IMPL NTL_CHEAP_THREAD_LOCAL long log_red_RR = 0
 This module is a slight modification of LLL_RR.cpp from NTL.
 
static NTL_CHEAP_THREAD_LOCAL unsigned long NumSwapsRR = 0
 

Macro Definition Documentation

◆ NTL_LLL_RR_lt__H

#define NTL_LLL_RR_lt__H

Function Documentation

◆ BKZ_RR_lt() [1/2]

long BKZ_RR_lt ( mat_ZZ & BB,
const RR & delta,
long beta,
long prune,
long m,
long n,
vec_RR * sqlen )

◆ BKZ_RR_lt() [2/2]

long BKZ_RR_lt ( mat_ZZ & BB,
double delta,
long beta,
long prune,
long m,
long n,
vec_RR * sqlen )

These two functions are wrappers of BKZ_RR in NTL, with the same modifications as in LLL_RR_lt above.

◆ ComputeBKZConstant_RR()

static void ComputeBKZConstant_RR ( long beta,
long p )
static

◆ ComputeBKZThresh_RR()

static void ComputeBKZThresh_RR ( RR * c,
long beta )
static

◆ ComputeGS_RR_lt()

void ComputeGS_RR_lt ( const mat_ZZ & B,
mat_RR & B1,
mat_RR & mu,
vec_RR & b,
vec_RR & c,
long k,
long n,
const RR & bound,
long st,
vec_RR & buf,
const RR & bound2 )

◆ inc_red_fudge_RR()

static void inc_red_fudge_RR ( )
static

◆ init_red_fudge_RR()

static void init_red_fudge_RR ( )
static

◆ InnerProductR()

static void InnerProductR ( RR & xx,
const vec_RR & a,
const vec_RR & b,
long n )
static

◆ InnerProductV()

void InnerProductV ( ZZ & prod,
const NTL::Vec< ZZ > & a,
const NTL::Vec< ZZ > & b,
long n )

◆ ll_LLL_RR_lt()

long ll_LLL_RR_lt ( mat_ZZ & B,
const RR & delta,
mat_RR & B1,
mat_RR & mu,
vec_RR & b,
vec_RR & c,
long m,
long n,
long init_k,
long & quit )
static

◆ LLL_RR_lt()

long LLL_RR_lt ( mat_ZZ & B,
double delta,
long m,
long n,
vec_RR * sqlen )

◆ RowTransform()

static void RowTransform ( vec_ZZ & A,
vec_ZZ & B,
const ZZ & MU1,
long n )
static

◆ RowTransform2()

static void RowTransform2 ( vec_ZZ & A,
vec_ZZ & B,
const ZZ & MU1,
long n )
static

Variable Documentation

◆ log_red_RR

NTL_START_IMPL NTL_CHEAP_THREAD_LOCAL long log_red_RR = 0
static

This module is a slight modification of LLL_RR.cpp from NTL.

The modifications are similar to those in LLL_FPInt. With the modified functions, we can apply LLL or BKZ to a submatrix (first r rows and c columns) of the matrix B that is passed in and returned. The returned basis will have c columns and at most max(r,c) rows (the rank of the basis matrix), so it may not occupy the entire space in B. We can also recover a vector sqlen that gives the square Euclidean lengths of the basis vectors, either in double or RR. Normally, this module should be used with Real = RR. Each function returns the dimension of the computed basis (number of independent rows). Important: This basis is always returned in the upper-left corner of the matrix B. This differs from the LLL_RR functions, which returns the zero vectors at the top.

◆ NumSwapsRR

NTL_CHEAP_THREAD_LOCAL unsigned long NumSwapsRR = 0
static