|
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.
|
|
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.