The Lenstra–Lenstra–Lovász (LLL) lattice basis reduction algorithm is a polynomial time lattice reduction algorithm invented by Arjen Lenstra , Hendrik Lenstra and László Lovász in 1982.[ 1] Given a basis
B
=
{
b
1
,
b
2
,
…
,
b
d
}
{\displaystyle \mathbf {B} =\{\mathbf {b} _{1},\mathbf {b} _{2},\dots ,\mathbf {b} _{d}\}}
with n -dimensional integer coordinates, for a lattice L (a discrete subgroup of R n ) with
d
≤
n
{\displaystyle \ d\leq n}
, the LLL algorithm calculates an LLL-reduced (short, nearly orthogonal ) lattice basis in time
O
(
d
5
n
log
3
B
)
{\displaystyle O(d^{5}n\log ^{3}B)\,}
where B is the largest length of
b
i
{\displaystyle b_{i}}
under the Euclidean norm.
The original applications were to give polynomial-time algorithms for factorizing polynomials with rational coefficients , for finding simultaneous rational approximations to real numbers , and for solving the integer linear programming problem in fixed dimensions.
LLL reduction
The precise definition of LLL-reduced is as follows: Given a basis
B
=
{
b
0
,
b
1
,
…
,
b
n
}
,
{\displaystyle \mathbf {B} =\{\mathbf {b} _{0},\mathbf {b} _{1},\dots ,\mathbf {b} _{n}\},}
define its Gram–Schmidt process orthogonal basis
B
∗
=
{
b
0
∗
,
b
1
∗
,
…
,
b
n
∗
}
,
{\displaystyle \mathbf {B} ^{*}=\{\mathbf {b} _{0}^{*},\mathbf {b} _{1}^{*},\dots ,\mathbf {b} _{n}^{*}\},}
and the Gram-Schmidt coefficients
μ
i
,
j
=
⟨
b
i
,
b
j
∗
⟩
⟨
b
j
∗
,
b
j
∗
⟩
{\displaystyle \mu _{i,j}={\frac {\langle \mathbf {b} _{i},\mathbf {b} _{j}^{*}\rangle }{\langle \mathbf {b} _{j}^{*},\mathbf {b} _{j}^{*}\rangle }}}
, for any
1
≤
j
<
i
≤
n
{\displaystyle 1\leq j<i\leq n}
.
Then the basis
B
{\displaystyle B}
is LLL-reduced if there exists a parameter
δ
{\displaystyle \delta }
in (0.25,1] such that the following holds:
(size-reduced) For
1
≤
j
<
i
≤
n
:
|
μ
i
,
j
|
≤
0.5
{\displaystyle 1\leq j<i\leq n\colon \left|\mu _{i,j}\right|\leq 0.5}
. By definition, this property guarantees the length reduction of the ordered basis.
(Lovász condition) For k = 1,2,..,n
:
δ
‖
b
k
−
1
∗
‖
2
≤
‖
b
k
∗
‖
2
+
μ
k
,
k
−
1
2
‖
b
k
−
1
∗
‖
2
{\displaystyle \colon \delta \Vert \mathbf {b} _{k-1}^{*}\Vert ^{2}\leq \Vert \mathbf {b} _{k}^{*}\Vert ^{2}+\mu _{k,k-1}^{2}\Vert \mathbf {b} _{k-1}^{*}\Vert ^{2}}
.
Here, estimating the value of the
δ
{\displaystyle \delta }
parameter, we can conclude how well the basis is reduced. Greater values of
δ
{\displaystyle \delta }
lead to stronger reductions of the basis.
Initially, A. Lenstra, H. Lenstra and L. Lovász demonstrated the LLL-reduction algorithm for
δ
=
3
4
{\displaystyle \delta ={\frac {3}{4}}}
.
Note that although LLL-reduction is well-defined for
δ
=
1
{\displaystyle \delta =1}
, the polynomial-time complexity is guaranteed only
for
δ
{\displaystyle \delta }
in (0.25,1).
The LLL algorithm computes LLL-reduced bases. There is no known efficient algorithm to compute a basis in which the basis vectors are as short as possible for lattices of dimensions greater than 4. However, an LLL-reduced basis is nearly as short as possible, in the sense that there are absolute bounds
c
i
>
1
{\displaystyle c_{i}>1}
such that the first basis vector is no more than
c
1
{\displaystyle c_{1}}
times as long as a shortest vector in the lattice,
the second basis vector is likewise within
c
2
{\displaystyle c_{2}}
of the second successive minimum, and so on.
LLL Algorithm
The following description is based on (Hoffstein, Pipher & Silverman 2008 , Theorem 6.68), with the corrections from the errata [ 2]
INPUT:
▹
{\displaystyle \triangleright }
a lattice basis
b
0
,
b
1
,
…
,
b
n
∈
Z
m
{\displaystyle b_{0},b_{1},\dots ,b_{n}\in Z^{m}}
,
▹
{\displaystyle \triangleright }
parameter
δ
{\displaystyle \delta }
with
1
4
<
δ
<
1
{\displaystyle {\frac {1}{4}}<\delta <1}
, most commonly
δ
=
3
4
{\displaystyle \delta ={\frac {3}{4}}}
PROCEDURE:
Perform Gram-Schmidt , but do not normalize:
o
r
t
h
o
:=
g
r
a
m
S
c
h
m
i
d
t
(
{
b
0
,
…
,
b
n
}
)
=
{
b
0
∗
,
…
,
b
n
∗
}
{\displaystyle ortho:=\mathrm {gramSchmidt} (\{b_{0},\dots ,b_{n}\})=\{b_{0}^{*},\dots ,b_{n}^{*}\}}
Define
μ
i
,
j
:=
⟨
b
i
,
b
j
∗
⟩
⟨
b
j
∗
,
b
j
∗
⟩
{\displaystyle \scriptstyle \mu _{i,j}:={\frac {\langle b_{i},b_{j}^{*}\rangle }{\langle b_{j}^{*},b_{j}^{*}\rangle }}}
, which must always use the most current values of
b
i
,
b
j
∗
{\displaystyle \scriptstyle b_{i},b_{j}^{*}}
.
Let
k
=
1
{\displaystyle k=1}
while
k
≤
n
{\displaystyle k\leq n}
do
for j from
k
−
1
{\displaystyle k-1}
to 0 do
if
|
μ
k
,
j
|
>
1
2
{\displaystyle |\mu _{k,j}|>{\frac {1}{2}}}
do
b
k
=
b
k
−
⌊
μ
k
,
j
⌉
b
j
{\displaystyle b_{k}=b_{k}-\lfloor \mu _{k,j}\rceil b_{j}}
Update ortho entries and related
μ
i
,
j
{\displaystyle \scriptstyle \mu _{i,j}}
's as needed.
(The naive method is to recompute
o
r
t
h
o
:=
g
r
a
m
S
c
h
m
i
d
t
(
{
b
0
,
…
,
b
n
}
)
=
{
b
0
∗
,
…
,
b
n
∗
}
{\displaystyle \scriptstyle ortho:=\mathrm {gramSchmidt} (\{b_{0},\dots ,b_{n}\})=\{b_{0}^{*},\dots ,b_{n}^{*}\}}
whenever a
b
i
{\displaystyle \scriptstyle b_{i}}
changes. )
end if
end for
if
⟨
b
k
∗
,
b
k
∗
⟩
≥
(
δ
−
(
μ
k
,
k
−
1
)
2
)
⟨
b
k
−
1
∗
,
b
k
−
1
∗
⟩
{\displaystyle \langle b_{k}^{*},b_{k}^{*}\rangle \geq (\delta -(\mu _{k,k-1})^{2})\langle b_{k-1}^{*},b_{k-1}^{*}\rangle }
then
k
=
k
+
1
{\displaystyle k=k+1}
else
Swap
b
k
{\displaystyle \scriptstyle b_{k}}
and
b
k
−
1
{\displaystyle \scriptstyle b_{k-1}}
.
Update ortho entries and related
μ
i
,
j
{\displaystyle \scriptstyle \mu _{i,j}}
's as needed. (See above comment. )
k
=
max
(
k
−
1
,
1
)
{\displaystyle k=\max(k-1,1)}
end if
end while
OUTPUT: LLL reduced basis
b
0
,
b
1
,
…
,
b
n
{\displaystyle b_{0},b_{1},\dots ,b_{n}}
Example
The following presents an example due to W. Bosma.[ 3]
Per WP:PSEUDOHEADING fake headings should not be used in articles.
Let a lattice basis
b
1
,
b
2
,
b
3
∈
Z
3
{\displaystyle \mathbf {b} _{1},\mathbf {b} _{2},\mathbf {b} _{3}\in Z^{3}}
, be given by the columns of
[
1
−
1
3
1
0
5
1
2
6
]
{\displaystyle {\begin{bmatrix}1&-1&3\\1&0&5\\1&2&6\end{bmatrix}}}
Then according to the LLL algorithm we obtain the following:
b
1
∗
=
b
1
=
[
1
1
1
]
,
B
1
=
⟨
b
1
∗
,
b
1
∗
⟩
=
[
1
1
1
]
[
1
1
1
]
=
3
{\displaystyle b_{1}^{*}=b_{1}={\begin{bmatrix}1\\1\\1\end{bmatrix}},B_{1}=\langle b_{1}^{*},b_{1}^{*}\rangle ={\begin{bmatrix}1\\1\\1\end{bmatrix}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}=3}
For
i
=
2
{\displaystyle i=2}
DO:
For
j
=
1
{\displaystyle j=1}
set
μ
2
,
1
=
⟨
b
2
,
b
1
∗
⟩
B
1
=
[
−
1
0
2
]
[
1
1
1
]
3
=
1
3
(
<
1
2
)
{\displaystyle \mu _{2,1}={\frac {\langle b_{2},b_{1}^{*}\rangle }{B_{1}}}={\frac {{\begin{bmatrix}-1\\0\\2\end{bmatrix}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}}{3}}={\frac {1}{3}}\left(<{\frac {1}{2}}\right)}
and
b
2
∗
=
b
2
−
μ
2
,
1
b
1
∗
=
[
−
1
0
2
]
−
1
3
[
1
1
1
]
=
[
−
4
3
−
1
3
5
3
]
.
{\displaystyle b_{2}^{*}=b_{2}-\mu _{2,1}b_{1}^{*}={\begin{bmatrix}-1\\0\\2\end{bmatrix}}-{\frac {1}{3}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}={\begin{bmatrix}{\frac {-4}{3}}\\{\frac {-1}{3}}\\{\frac {5}{3}}\end{bmatrix}}.}
B
2
=
⟨
b
2
∗
,
b
2
∗
⟩
=
[
−
4
3
−
1
3
5
3
]
[
−
4
3
−
1
3
5
3
]
=
14
3
.
{\displaystyle B_{2}=\langle b_{2}^{*},b_{2}^{*}\rangle ={\begin{bmatrix}{\frac {-4}{3}}\\{\frac {-1}{3}}\\{\frac {5}{3}}\end{bmatrix}}{\begin{bmatrix}{\frac {-4}{3}}\\{\frac {-1}{3}}\\{\frac {5}{3}}\end{bmatrix}}={\frac {14}{3}}.}
k
:=
2
{\displaystyle \mathbf {k} :=2}
Here the step 4 of the LLL algorithm is skipped as size-reduced property holds for
μ
2
,
1
{\displaystyle \mu _{2,1}}
For
i
=
3
{\displaystyle i=3}
and for
j
=
1
,
2
{\displaystyle j=1,2}
calculate
μ
i
,
j
{\displaystyle \mu _{i,j}}
and
B
i
{\displaystyle B_{i}}
:
μ
3
,
1
=
⟨
b
3
,
b
1
∗
⟩
B
1
=
[
3
5
6
]
[
1
1
1
]
3
=
14
3
(
>
1
2
)
{\displaystyle \mu _{3,1}={\frac {\langle b_{3},b_{1}^{*}\rangle }{B_{1}}}={\frac {{\begin{bmatrix}3\\5\\6\end{bmatrix}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}}{3}}={\frac {14}{3}}(>{\frac {1}{2}})}
hence
b
3
∗
=
b
3
−
μ
3
,
1
b
1
∗
=
[
3
5
6
]
−
14
3
[
1
1
1
]
=
[
−
5
3
1
3
4
3
]
{\displaystyle b_{3}^{*}=b_{3}-\mu _{3,1}b_{1}^{*}={\begin{bmatrix}3\\5\\6\end{bmatrix}}-{\frac {14}{3}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}={\begin{bmatrix}{\frac {-5}{3}}\\{\frac {1}{3}}\\{\frac {4}{3}}\end{bmatrix}}}
and
μ
3
,
2
=
⟨
b
3
,
b
2
∗
⟩
B
2
=
[
3
5
6
]
[
−
4
3
−
1
3
5
3
]
14
3
=
13
14
(
>
1
2
)
{\displaystyle \mu _{3,2}={\frac {\langle b_{3},b_{2}^{*}\rangle }{B_{2}}}={\frac {{\begin{bmatrix}3\\5\\6\end{bmatrix}}{\begin{bmatrix}{\frac {-4}{3}}\\{\frac {-1}{3}}\\{\frac {5}{3}}\end{bmatrix}}}{\frac {14}{3}}}={\frac {13}{14}}\left(>{\frac {1}{2}}\right)}
hence
b
3
∗
=
b
3
∗
−
μ
3
,
2
b
2
∗
=
[
−
5
3
1
3
4
3
]
−
13
14
[
−
4
3
−
1
3
5
3
]
=
[
−
18
42
27
42
−
9
42
]
=
[
−
6
14
9
14
−
3
14
]
{\displaystyle b_{3}^{*}=b_{3}^{*}-\mu _{3,2}b_{2}^{*}={\begin{bmatrix}{\frac {-5}{3}}\\{\frac {1}{3}}\\{\frac {4}{3}}\end{bmatrix}}-{\frac {13}{14}}{\begin{bmatrix}{\frac {-4}{3}}\\{\frac {-1}{3}}\\{\frac {5}{3}}\end{bmatrix}}={\begin{bmatrix}{\frac {-18}{42}}\\{\frac {27}{42}}\\{\frac {-9}{42}}\end{bmatrix}}={\begin{bmatrix}{\frac {-6}{14}}\\{\frac {9}{14}}\\{\frac {-3}{14}}\end{bmatrix}}}
and
B
3
=
⟨
b
3
∗
,
b
3
∗
⟩
=
[
−
6
14
9
14
−
3
14
]
[
−
6
14
9
14
−
3
14
]
=
126
196
=
9
14
{\displaystyle B_{3}=\langle b_{3}^{*},b_{3}^{*}\rangle ={\begin{bmatrix}{\frac {-6}{14}}\\{\frac {9}{14}}\\{\frac {-3}{14}}\end{bmatrix}}{\begin{bmatrix}{\frac {-6}{14}}\\{\frac {9}{14}}\\{\frac {-3}{14}}\end{bmatrix}}={\frac {126}{196}}={\frac {9}{14}}}
While
k
≤
3
{\displaystyle k\leq 3}
DO
Length reduce
b
3
{\displaystyle b_{3}}
and correct
μ
3
,
1
{\displaystyle \mu _{3,1}}
and
μ
3
,
2
{\displaystyle \mu _{3,2}}
according to reduction subroutine in step 4:
For
∣
μ
3
,
1
∣>
1
2
{\displaystyle \mid \mu _{3,1}\mid >{\frac {1}{2}}}
EXECUTE reduction subroutine RED(3,1):
r
=
⌊
0.5
+
μ
3
,
l
⌋
=
5
{\displaystyle r=\lfloor 0.5+\mu _{3,l}\rfloor =5}
and
b
3
=
b
3
−
5
b
1
=
[
3
5
6
]
−
[
5
5
5
]
=
[
−
2
0
1
]
{\displaystyle b_{3}=b_{3}-5b_{1}={\begin{bmatrix}3\\5\\6\end{bmatrix}}-{\begin{bmatrix}5\\5\\5\end{bmatrix}}={\begin{bmatrix}-2\\0\\1\end{bmatrix}}}
μ
3
,
1
=
μ
3
,
l
−
r
μ
1
,
1
=
−
1
3
(
<
1
2
)
{\displaystyle \mu _{3,1}=\mu _{3,l}-r\mu _{1,1}={\frac {-1}{3}}\left(<{\frac {1}{2}}\right)}
Set
μ
3
,
1
=
μ
3
,
1
−
r
=
14
3
−
5
=
−
1
3
{\displaystyle \mu _{3,1}=\mu _{3,1}-r={\frac {14}{3}}-5={\frac {-1}{3}}}
For
∣
μ
3
,
2
∣>
1
2
{\displaystyle \mid \mu _{3,2}\mid >{\frac {1}{2}}}
EXECUTE reduction subroutine RED(3,2):
r
=
⌊
0.5
+
μ
3
,
2
⌋
=
1
{\displaystyle r=\lfloor 0.5+\mu _{3,2}\rfloor =1}
and
b
3
=
b
3
−
b
2
=
[
3
5
6
]
−
[
−
1
0
2
]
=
[
4
5
4
]
{\displaystyle b_{3}=b_{3}-b_{2}={\begin{bmatrix}3\\5\\6\end{bmatrix}}-{\begin{bmatrix}-1\\0\\2\end{bmatrix}}={\begin{bmatrix}4\\5\\4\end{bmatrix}}}
Set
μ
3
,
2
=
μ
3
,
2
−
r
μ
2
,
2
=
13
14
−
1
=
−
1
14
{\displaystyle \mu _{3,2}=\mu _{3,2}-r\mu _{2,2}={\frac {13}{14}}-1={\frac {-1}{14}}}
μ
3
,
2
=
μ
3
,
2
−
1
=
−
1
14
(
<
1
2
)
{\displaystyle \mu _{3,2}=\mu _{3,2}-1={\frac {-1}{14}}\left(<{\frac {1}{2}}\right)}
As
B
3
<
(
3
4
−
μ
3
,
2
2
)
B
2
{\displaystyle B_{3}<\left({\frac {3}{4}}-\mu _{3,2}^{2}\right)B_{2}}
takes place, then
Exchange
b
3
{\displaystyle b_{3}}
and
b
2
{\displaystyle b_{2}}
k
:=
2
{\displaystyle k:=2}
Apply a SWAP, continue algorithm with the lattice basis, which is given by columns
[
1
4
−
1
1
5
0
1
4
2
]
{\displaystyle {\begin{bmatrix}1&4&-1\\1&5&0\\1&4&2\end{bmatrix}}}
Implement the algorithm steps again.
b
1
∗
=
b
1
=
[
1
1
1
]
,
B
1
=
3
{\displaystyle b_{1}^{*}=b_{1}={\begin{bmatrix}1\\1\\1\end{bmatrix}},B_{1}=3}
μ
2
,
1
=
⟨
b
2
,
b
1
∗
⟩
B
1
=
[
4
5
4
]
[
1
1
1
]
3
=
13
3
(
>
1
2
)
{\displaystyle \mu _{2,1}={\frac {\langle b_{2},b_{1}^{*}\rangle }{B_{1}}}={\frac {{\begin{bmatrix}4\\5\\4\end{bmatrix}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}}{3}}={\frac {13}{3}}\left(>{\frac {1}{2}}\right)}
b
2
∗
=
b
2
−
μ
2
,
1
b
1
∗
=
[
4
5
4
]
−
13
3
[
1
1
1
]
=
[
−
1
3
2
3
−
1
3
]
{\displaystyle b_{2}^{*}=b_{2}-\mu _{2,1}b_{1}^{*}={\begin{bmatrix}4\\5\\4\end{bmatrix}}-{\frac {13}{3}}{\begin{bmatrix}1\\1\\1\end{bmatrix}}={\begin{bmatrix}{\frac {-1}{3}}\\{\frac {2}{3}}\\{\frac {-1}{3}}\end{bmatrix}}}
.
B
2
=
⟨
b
2
∗
,
b
2
∗
⟩
=
2
3
{\displaystyle B_{2}=\langle b_{2}^{*},b_{2}^{*}\rangle ={\frac {2}{3}}}
.For
∣
μ
2
,
1
∣>
1
2
{\displaystyle \mid \mu _{2,1}\mid >{\frac {1}{2}}}
EXECUTE reduction subroutine RED(2,1):
r
=
⌊
0.5
+
μ
2
,
l
⌋
=
4
{\displaystyle r=\lfloor 0.5+\mu _{2,l}\rfloor =4}
and
b
2
=
b
2
−
4
b
1
=
[
4
5
4
]
−
[
4
4
4
]
=
[
0
1
0
]
{\displaystyle b_{2}=b_{2}-4b_{1}={\begin{bmatrix}4\\5\\4\end{bmatrix}}-{\begin{bmatrix}4\\4\\4\end{bmatrix}}={\begin{bmatrix}0\\1\\0\end{bmatrix}}}
Set
μ
2
,
1
=
μ
2
,
1
−
4
μ
1
,
1
=
13
3
−
4
=
1
3
(
<
1
2
)
{\displaystyle \mu _{2,1}=\mu _{2,1}-4\mu _{1,1}={\frac {13}{3}}-4={\frac {1}{3}}\left(<{\frac {1}{2}}\right)}
As
B
2
<
(
3
4
−
μ
2
,
1
2
)
B
1
{\displaystyle B_{2}<\left({\frac {3}{4}}-\mu _{2,1}^{2}\right)B_{1}}
takes place,
then Exchange
b
2
{\displaystyle b_{2}}
and
b
1
{\displaystyle b_{1}}
Per WP:PSEUDOHEADING fake headings should not be used in articles. LLL reduced basis
[
0
1
−
1
1
0
0
0
1
2
]
{\displaystyle {\begin{bmatrix}0&1&-1\\1&0&0\\0&1&2\end{bmatrix}}}
Applications
The LLL algorithm has found numerous other applications in MIMO detection algorithms [ 4] and cryptanalysis of public-key encryption schemes: knapsack cryptosystems , RSA with particular settings, NTRUEncrypt , and so forth. The algorithm can be used to find integer solutions to many problems.[ 5]
In particular, the LLL algorithm forms a core of one of the integer relation algorithms . For example, if it is believed that r =1.618034 is a (slightly rounded) root to an unknown quadratic equation with integer coefficients, one may apply LLL reduction to the lattice in
R
4
{\displaystyle R^{4}}
spanned by
[
1
,
0
,
0
,
10000
r
2
]
,
[
0
,
1
,
0
,
10000
r
]
,
{\displaystyle [1,0,0,10000r^{2}],[0,1,0,10000r],}
and
[
0
,
0
,
1
,
10000
]
{\displaystyle [0,0,1,10000]}
. The first vector in the reduced basis will be an integer linear combination of these three, thus necessarily of the form
[
a
,
b
,
c
,
10000
(
a
r
2
+
b
r
+
c
)
]
{\displaystyle [a,b,c,10000(ar^{2}+br+c)]}
; but such a vector is "short" only if a , b , c are small and
a
r
2
+
b
r
+
c
{\displaystyle ar^{2}+br+c}
is even smaller. Thus the first three entries of this short vector are likely to be the coefficients of the integral quadratic polynomial which has r as a root. In this example the LLL algorithm finds the shortest vector to be [1, -1, -1, 0.00025] and indeed
x
2
−
x
−
1
{\displaystyle x^{2}-x-1}
has a root equal to the golden ratio , 1.6180339887….
Implementations
LLL is implemented in
Arageli as the function lll_reduction_int
fpLLL as a stand-alone implementation
GAP as the function LLLReducedBasis
Macaulay2 as the function LLL
in the package LLLBases
Magma as the functions LLL
and LLLGram
(taking a gram matrix)
Maple as the function IntegerRelations[LLL]
Mathematica as the function LatticeReduce
Number Theory Library (NTL) as the function LLL
PARI/GP as the function qflll
Pymatgen as the function analysis.get_lll_reduced_lattice
Sage as the method LLL
driven by fpLLL and NTL
See also
Notes
^ Lenstra, A. K. ; Lenstra, H. W., Jr. ; Lovász, L. (1982). "Factoring polynomials with rational coefficients". Mathematische Annalen . 261 (4): 515–534. doi :10.1007/BF01457454 . MR 0682664 . hdl :1887/3810 .{{cite journal }}
: CS1 maint: multiple names: authors list (link )
^ Silverman, Joseph. "Introduction to Mathematical Cryptography Errata" (PDF) . Brown University Mathematics Dept . Retrieved 5 May 2015 .
^ Bosma, Wieb. "4. LLL" (PDF) . Lecture notes . Retrieved 28 February 2010 .
^ Shahabuddin, Shahriar et al., "A Customized Lattice Reduction Multiprocessor for MIMO Detection", in Arxiv preprint, January 2015.
^ D. Simon (2007). "Selected applications of LLL in number theory" (PDF) . LLL+25 Conference . Caen, France.
References