[back] [prev] [next] [index] [root]
MatLLL
Performs an LLL reduction on the columns of an integer
or real matrix.
Syntax:
L := MatLLL(M [,r]);
L := MatLLL(M,"short" | "long" [,r]);
list of A, T |
L |
|
matrix |
M |
|
LLL constant (default 0.75) |
r |
|
Description:
Performs an LLL reduction on the columns of an integer or real
matrix M. The result is a list containing the reduced
matrix A and the unimodular transformation matrix {\tt
T} such that M = A* T. The MatLLL
function requires that the columns of M are linearly
independent. \smallskip
If M is an integer matrix the MatLLL function
normally omits any floating-point arithmetic. When the {\tt
"SHORT"} option is specified the MatLLL function uses
floating-point arithmetic basing on machine
doubles. \smallskip
If M is a real matrix the MatLLL function
normally makes use of the long floating-point arithmetic of
kash. When the "SHORT" option is specified the {\tt
MatLLL} function uses floating-point arithmetic basing on
machine doubles
Example:
kash> M := Mat(Z, [[234, 469], [-6546, -13126],
> [-6312, -12657]]);
[ 234 469]
[ -6546 -13126]
[ -6312 -12657]
kash> L := MatLLL(M);
[ [ 1 42]
[-34 -18]
[-33 24], [ -2 385]
[ 1 -192] ]
kash> L[1];
[ 1 42]
[-34 -18]
[-33 24]
kash> M*L[2];
> [ 1 42]
[-34 -18]
[-33 24]
<- back[back] [prev] [next] [index] [root]