[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]