[back] [prev] [next] [index] [root]

 


LatEnum

Enumeration of lattice points.

Syntax:

ok := LatEnum(Lambda);

boolean
  ok  
lattice
  Lambda  

Description:

Please refer to "KASH{} - A User's Guide" for a detailed description of the LatEnum function.


Example:

Let rho be a zero of the polynomial x^3+x^2+x-1 \in Z[x]. We will enumerate several elements \alpha \in Z[rho] with small T_2 norms. Those elements are likely to have a small norm. By assigning 4.2 to the lower bound we avoid enumeration of lattice elements which correspond to torsion units.

kash> o := Order(Poly(Zx, [1,1,1,-1]));;
kash> Lambda := Lat(o);;
kash> LatEnumLowerBound(Lambda, 4.2);
4.2
kash> LatEnumUpperBound(Lambda, 2*EltT2(OrderBasis(o)[3]));
13.706659122393255422774258033027130293898341365588
kash> while LatEnum(Lambda) do
> elt := EltMove(LatEnumElt(Lambda), o);
> Print(elt, "\t", EltT2(elt), "\t", Norm(elt), "\n");
> od;
> [-2, -2, -1]	12.035720531284966795311115387919719602545072476587	-1
[-1, -2, -1]	9.035720531284966795311115387919719602545072476585	-4
[0, -2, -1]	12.035720531284966795311115387919719602545072476587	-7
[-2, -1, -1]	9.470353793290390217264420480058530559999788639053	-2
[-1, -1, -1]	4.470353793290390217264420480058530559999788639052	-1
[0, -1, -1]	5.470353793290390217264420480058530559999788639052	-2
[1, -1, -1]	12.47035379329039021726442048005853055999978863905	1
[-1, 0, -1]	7.853329561196627711387129016513565146949170682804	-4
[0, 0, -1]	6.853329561196627711387129016513565146949170682794	-1
[1, 0, -1]	11.853329561196627711387129016513565146949170682793	4
[-2, -1, 0]	11.974171252950407036084701722158111814747332940641	-7
[-1, -1, 0]	4.974171252950407036084701722158111814747332940639	-2
[1, -1, 0]	8.974171252950407036084701722158111814747332940643	2
-2	12	-8


<- back[back] [prev] [next] [index] [root]