-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME
103 lines (63 loc) · 3.03 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
cleanbkz is a library to find short vectors in a lattice. Once finished
it will contain an improved enumeration algorithm using extreme pruning,
the bkz2.0 and probably an improved random sampler algorithm.
------------------------
1. Compiling the cleanbkz sources
------------------------
cleanbkz requires the NTL library. Version 5.4.2 (or higher) is needed.
Once you have NTL installed, execute:
$ cmake .
$ make
Now both the library and the tests are compiled. You can find the test
executables and the command line interface in the bin/ folder.
The scripts plot.sh and debug.sh require gnuplot to function properly
and visualize the generated data.
------------------------
2. The command line interface
------------------------
Every command line tool has a built-in help accessible with the -h switch.
Examples:
0) Measuring the rate of reduction and enumeration:
./bin/timing -d 60 -k 20 -n 960
Wait until it finishes. On a AMD Opteron(tm) 3380 it took 15 minutes and
gave the following result:
Measuring dimension 60:
t_node= 6.26296e-08
t_reduc= 0.855437
1) Generating a lattice:
./bin/genlattice -d 60 -c 0.94 -s 11 -k 20 > data/d60s11k20c0_94.lat
2) Generating a boundary function:
./bin/boundtool -f data/d60s11k20c0_94.lat -n 6.26296e-08 -r 0.855437 -l 60 > data/d60s11k20c0_94.plt
Wait until it finishes. On a AMD Opteron(tm) 3380 it took 20 minutes. You
also can generate a pdf chart of the bounding function:
./plot.sh data/d60s11k20c0_94.plt
This bounding function will not yet be optimal. To get a close to optimal
bounding function run the optimization a little longer:
./bin/boundtool -f data/d60s11k20c0_94.lat -n 6.26296e-08 -r 0.855437 -l 60 -c 3000 > data/d60s11k20c0_94_tri.plt
3) Running the actual enumeration:
The file produced in the previous step contains data for gnuplot and
other information like the bounding function in NTL's format, the
predicted success probability and the expected running time.
The following program requires the boundary function in NTL's format,
so first we need to copy the line (without the starting '#' sign) in
a new text file. In this example the name of this new text file is
'd60s11k20c0_94.bnd'. Now issue the command
./bin/eprune -l data/d60s11k20c0_94.lat -b data/d60s11k20c0_94.bnd
and wait until it finishes. On a AMD Opteron(tm) 3380 it took around
89 seconds, fairly close to the promised 95 seconds.
------------------------
3. Generate API documentation
------------------------
The source files are annotated for doxygen documentation. To generate
the documentation, first install doxygen and then execute:
$ make doc
Now the documentation is in the doc/ folder.
------------------------
4. File extensions and formats
------------------------
.lat These are the data files generated by the genlattice tool and
contain the lattice basis in NTL's output format.
.plt Boundary function generated by the boundtool application in a
form readable by gnuplot.
.bnd Boundary function in NTL's format. It is usually created by
copying the corresponding line from a .plt file.