source: git/ntl/include/NTL/LLL.h @ 92c0ac

spielwiese
Last change on this file since 92c0ac was 92c0ac, checked in by Hans Schönemann <hannes@…>, 21 years ago
NTL-5.2 git-svn-id: file:///usr/local/Singular/svn/trunk@6320 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 5.6 KB
Line 
1#ifndef NTL_LLL__H
2#define NTL_LLL__H
3
4#include <NTL/mat_ZZ.h>
5#include <NTL/mat_RR.h>
6
7NTL_OPEN_NNS
8
9long LLL(ZZ& det, mat_ZZ& B, long verbose = 0);
10long LLL(ZZ& det, mat_ZZ& B, mat_ZZ& U, long verbose = 0);
11
12long LLL(ZZ& det, mat_ZZ& B, long a, long b, long verbose = 0);
13long LLL(ZZ& det, mat_ZZ& B, mat_ZZ& U, long a, long b, long verbose = 0);
14
15long LLL_plus(vec_ZZ& D, mat_ZZ& B, mat_ZZ& U, long verbose=0);
16long LLL_plus(vec_ZZ& D, mat_ZZ& B, long verbose=0);
17long LLL_plus(vec_ZZ& D, mat_ZZ& B, mat_ZZ& U, long a, long b, long verbose=0);
18long LLL_plus(vec_ZZ& D, mat_ZZ& B, long a, long b, long verbose=0);
19
20long image(ZZ& det, mat_ZZ& B, long verbose = 0);
21long image(ZZ& det, mat_ZZ& B, mat_ZZ& U, long verbose = 0);
22
23long LatticeSolve(vec_ZZ& x, const mat_ZZ& A, const vec_ZZ& y, long reduce=0);
24
25
26
27typedef long (*LLLCheckFct)(const vec_ZZ&); 
28
29extern double LLLStatusInterval;
30extern char *LLLDumpFile;
31
32
33// classical Gramm-Schmidt versions
34
35long LLL_FP(mat_ZZ& B, double delta = 0.99,
36            long deep = 0, LLLCheckFct check = 0, long verbose = 0);
37
38long LLL_FP(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, long deep = 0,
39           LLLCheckFct check = 0, long verbose = 0);
40
41
42long BKZ_FP(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
43         LLLCheckFct check = 0, long verbose = 0) ;
44long BKZ_FP(mat_ZZ& BB, mat_ZZ& U, double delta=0.99, 
45         long BlockSize=10, long prune=0, 
46         LLLCheckFct check = 0, long verbose = 0);
47
48long LLL_XD(mat_ZZ& B, double delta = 0.99, long deep = 0,
49           LLLCheckFct check = 0, long verbose = 0);
50long LLL_XD(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, long deep = 0,
51           LLLCheckFct check = 0, long verbose = 0);
52
53
54long BKZ_XD(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
55         LLLCheckFct check = 0, long verbose = 0);
56long BKZ_XD(mat_ZZ& BB, mat_ZZ& U, double delta=0.99,
57         long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
58
59long LLL_QP(mat_ZZ& B, double delta = 0.99, long deep = 0,
60           LLLCheckFct check = 0, long verbose = 0);
61long LLL_QP(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, long deep = 0,
62           LLLCheckFct check = 0, long verbose = 0);
63
64
65long BKZ_QP(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
66         LLLCheckFct check = 0, long verbose = 0);
67long BKZ_QP(mat_ZZ& BB, mat_ZZ& U, double delta=0.99,
68         long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
69
70long BKZ_QP1(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
71         LLLCheckFct check = 0, long verbose = 0);
72long BKZ_QP1(mat_ZZ& BB, mat_ZZ& U, double delta=0.99,
73         long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
74
75long LLL_RR(mat_ZZ& B, double delta = 0.99, long deep = 0,
76           LLLCheckFct check = 0, long verbose = 0);
77long LLL_RR(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, 
78            long deep = 0, LLLCheckFct check = 0, long verbose = 0);
79
80
81long BKZ_RR(mat_ZZ& BB, double delta=0.99, long BlockSize=10, 
82            long prune=0, LLLCheckFct check = 0, long verbose = 0);
83
84long BKZ_RR(mat_ZZ& BB, mat_ZZ& U, double delta=0.99, 
85            long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
86
87
88// Givens rotations versions
89
90long G_LLL_FP(mat_ZZ& B, double delta = 0.99,
91            long deep = 0, LLLCheckFct check = 0, long verbose = 0);
92
93long G_LLL_FP(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, long deep = 0,
94           LLLCheckFct check = 0, long verbose = 0);
95
96
97long G_BKZ_FP(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
98         LLLCheckFct check = 0, long verbose = 0) ;
99long G_BKZ_FP(mat_ZZ& BB, mat_ZZ& U, double delta=0.99, 
100         long BlockSize=10, long prune=0, 
101         LLLCheckFct check = 0, long verbose = 0);
102
103long G_LLL_XD(mat_ZZ& B, double delta = 0.99, long deep = 0,
104           LLLCheckFct check = 0, long verbose = 0);
105long G_LLL_XD(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, long deep = 0,
106           LLLCheckFct check = 0, long verbose = 0);
107
108
109long G_BKZ_XD(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
110         LLLCheckFct check = 0, long verbose = 0);
111long G_BKZ_XD(mat_ZZ& BB, mat_ZZ& U, double delta=0.99,
112         long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
113
114long G_LLL_QP(mat_ZZ& B, double delta = 0.99, long deep = 0,
115           LLLCheckFct check = 0, long verbose = 0);
116long G_LLL_QP(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, long deep = 0,
117           LLLCheckFct check = 0, long verbose = 0);
118
119
120long G_BKZ_QP(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
121         LLLCheckFct check = 0, long verbose = 0);
122long G_BKZ_QP(mat_ZZ& BB, mat_ZZ& U, double delta=0.99,
123         long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
124
125long G_BKZ_QP1(mat_ZZ& BB, double delta=0.99, long BlockSize=10, long prune=0,
126         LLLCheckFct check = 0, long verbose = 0);
127long G_BKZ_QP1(mat_ZZ& BB, mat_ZZ& U, double delta=0.99,
128         long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
129
130long G_LLL_RR(mat_ZZ& B, double delta = 0.99, long deep = 0,
131           LLLCheckFct check = 0, long verbose = 0);
132long G_LLL_RR(mat_ZZ& B, mat_ZZ& U, double delta = 0.99, 
133            long deep = 0, LLLCheckFct check = 0, long verbose = 0);
134
135
136long G_BKZ_RR(mat_ZZ& BB, double delta=0.99, long BlockSize=10, 
137            long prune=0, LLLCheckFct check = 0, long verbose = 0);
138
139long G_BKZ_RR(mat_ZZ& BB, mat_ZZ& U, double delta=0.99, 
140            long BlockSize=10, long prune=0, LLLCheckFct check = 0, long verbose = 0);
141
142void ComputeGS(const mat_ZZ& B, mat_RR& mu, vec_RR& c);
143
144
145void NearVector(vec_ZZ& ww, const mat_ZZ& BB, const vec_ZZ& a);
146
147NTL_CLOSE_NNS
148
149#endif
Note: See TracBrowser for help on using the repository browser.