1 //==============================================================================================
2 //
3 //	This file is part of LiDIA --- a library for computational number theory
4 //
5 //	Copyright (c) 1994--2001 the LiDIA Group.  All rights reserved.
6 //
7 //	See http://www.informatik.tu-darmstadt.de/TI/LiDIA/
8 //
9 //----------------------------------------------------------------------------------------------
10 //
11 //	$Id$
12 //
13 //	Author	: Patrick Theobald (PT)
14 //	Changes	: See CVS log
15 //
16 //==============================================================================================
17 
18 
19 #ifdef HAVE_CONFIG_H
20 # include	"config.h"
21 #endif
22 #include	"LiDIA/bigint_matrix.h"
23 #include	"LiDIA/matrix/hnf_conf.h"
24 #include	"LiDIA/matrix/hnf_conf.cc"
25 #include	"LiDIA/matrix/hnf_kernel.h"
26 #include	"LiDIA/matrix/hnf_kernel.cc"
27 #include	"LiDIA/matrix/normalize_kernel.h"
28 #include	"LiDIA/matrix/normalize_kernel.cc"
29 #include	"LiDIA/matrix/dense_bigint_matrix_modules.h"
30 #include	"LiDIA/matrix/dense_bigint_matrix_modules.cc"
31 #include	"LiDIA/matrix/sparse_bigint_matrix_modules.h"
32 #include	"LiDIA/matrix/sparse_bigint_matrix_modules.cc"
33 #include	"LiDIA/matrix/bigint_matrix_algorithms.h"
34 #include	"LiDIA/matrix/bigint_matrix_algorithms.cc"
35 #include	"LiDIA/matrix/crt_and_prime_handling.h"
36 
37 
38 
39 #ifdef LIDIA_NAMESPACE
40 namespace LiDIA {
41 #endif
42 
43 
44 template class COSMM< bigint >;
45 template class RODMM< bigint >;
46 
47 template class hermite< bigint, RODMM< bigint >, RODMM< bigint > >;
48 template class Bradley< bigint, RODMM< bigint >, RODMM< bigint > >;
49 template class Iliopoulos< bigint, RODMM< bigint >, RODMM< bigint > >;
50 template class opt< bigint, RODMM< bigint >, RODMM< bigint > >;
51 template class Blankinship< bigint, RODMM< bigint >, RODMM< bigint > >;
52 template class Best_remainder< bigint, RODMM< bigint >, RODMM< bigint > >;
53 template class havas_best_remainder< bigint, RODMM< bigint >, RODMM< bigint > >;
54 template class havas_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
55 template class havas_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
56 template class havas_sorting_gcd< bigint, RODMM< bigint >, RODMM< bigint > >;
57 template class havas_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > >;
58 
59 template class havas_min_abs_of_row_plus_minimal_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
60 template class havas_min_abs_of_row_plus_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
61 template class havas_min_abs_of_row_plus_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > >;
62 
63 template class havas_minimal_norm_plus_min_abs_of_row< bigint, RODMM< bigint >, RODMM< bigint > >;
64 template class havas_minimal_norm_plus_sorting_gcd< bigint, RODMM< bigint >, RODMM< bigint > >;
65 template class havas_minimal_norm_plus_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > >;
66 
67 template class havas_sorting_gcd_plus_minimal_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
68 template class havas_sorting_gcd_plus_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
69 template class havas_sorting_gcd_plus_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > >;
70 
71 template class havas_min_no_of_elements_plus_min_abs_of_row< bigint, RODMM< bigint >, RODMM< bigint > >;
72 template class havas_min_no_of_elements_plus_minimal_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
73 template class havas_min_no_of_elements_plus_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > >;
74 template class havas_min_no_of_elements_plus_sorting_gcd< bigint, RODMM< bigint >, RODMM< bigint > >;
75 
76 template class Storjohann< bigint, RODMM< bigint >, RODMM< bigint > >;
77 template class Heuristik< bigint, RODMM< bigint >, RODMM< bigint > >;
78 
79 template class havas_best_remainder_ext< bigint, RODMM< bigint >, RODMM< bigint > >;
80 template class havas_euclidean_norm_ext< bigint, RODMM< bigint >, RODMM< bigint > >;
81 
82 
83 template class hermite< bigint, COSMM< bigint >, COSMM< bigint > >;
84 template class Bradley< bigint, COSMM< bigint >, COSMM< bigint > >;
85 template class Iliopoulos< bigint, COSMM< bigint >, COSMM< bigint > >;
86 template class opt< bigint, COSMM< bigint >, COSMM< bigint > >;
87 template class Blankinship< bigint, COSMM< bigint >, COSMM< bigint > >;
88 template class Best_remainder< bigint, COSMM< bigint >, COSMM< bigint > >;
89 template class havas_best_remainder< bigint, COSMM< bigint >, COSMM< bigint > >;
90 template class havas_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
91 template class havas_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
92 template class havas_sorting_gcd< bigint, COSMM< bigint >, COSMM< bigint > >;
93 template class havas_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > >;
94 
95 template class havas_min_abs_of_row_plus_minimal_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
96 template class havas_min_abs_of_row_plus_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
97 template class havas_min_abs_of_row_plus_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > >;
98 
99 template class havas_minimal_norm_plus_min_abs_of_row< bigint, COSMM< bigint >, COSMM< bigint > >;
100 template class havas_minimal_norm_plus_sorting_gcd< bigint, COSMM< bigint >, COSMM< bigint > >;
101 template class havas_minimal_norm_plus_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > >;
102 
103 template class havas_sorting_gcd_plus_minimal_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
104 template class havas_sorting_gcd_plus_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
105 template class havas_sorting_gcd_plus_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > >;
106 
107 template class havas_min_no_of_elements_plus_min_abs_of_row< bigint, COSMM< bigint >, COSMM< bigint > >;
108 template class havas_min_no_of_elements_plus_minimal_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
109 template class havas_min_no_of_elements_plus_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > >;
110 template class havas_min_no_of_elements_plus_sorting_gcd< bigint, COSMM< bigint >, COSMM< bigint > >;
111 
112 template class Storjohann< bigint, COSMM< bigint >, COSMM< bigint > >;
113 template class Heuristik< bigint, COSMM< bigint >, COSMM< bigint > >;
114 
115 template class havas_best_remainder_ext< long, COSMM< long >, COSMM< bigint > >;
116 template class havas_best_remainder_ext< bigint, COSMM< bigint >, COSMM< bigint > >;
117 template class havas_euclidean_norm_ext< long, COSMM< long >, COSMM< bigint > >;
118 template class nf_conf3e< long, COSMM< long >, COSMM< bigint > >;
119 
120 
121 //
122 // dense representation
123 //
124 
125 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
126 	hermite< bigint, RODMM< bigint >, RODMM< bigint > > >;
127 
128 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
129 	Bradley< bigint, RODMM< bigint >, RODMM< bigint > > >;
130 
131 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
132 	Iliopoulos< bigint, RODMM< bigint >, RODMM< bigint > > >;
133 
134 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
135 	opt< bigint, RODMM< bigint >, RODMM< bigint > > >;
136 
137 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
138 	Blankinship< bigint, RODMM< bigint >, RODMM< bigint > > >;
139 
140 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
141 	Best_remainder< bigint, RODMM< bigint >, RODMM< bigint > > >;
142 
143 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
144 	havas_best_remainder< bigint, RODMM< bigint >, RODMM< bigint > > >;
145 
146 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
147 	havas_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
148 
149 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
150 	havas_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
151 
152 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
153 	havas_sorting_gcd< bigint, RODMM< bigint >, RODMM< bigint > > >;
154 
155 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
156 	havas_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > > >;
157 
158 
159 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
160 	havas_min_abs_of_row_plus_minimal_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
161 
162 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
163 	havas_min_abs_of_row_plus_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
164 
165 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
166 	havas_min_abs_of_row_plus_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > > >;
167 
168 
169 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
170 	havas_minimal_norm_plus_min_abs_of_row< bigint, RODMM< bigint >, RODMM< bigint > > >;
171 
172 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
173 	havas_minimal_norm_plus_sorting_gcd< bigint, RODMM< bigint >, RODMM< bigint > > >;
174 
175 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
176 	havas_minimal_norm_plus_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > > >;
177 
178 
179 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
180 	havas_sorting_gcd_plus_minimal_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
181 
182 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
183 	havas_sorting_gcd_plus_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
184 
185 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
186 	havas_sorting_gcd_plus_min_no_of_elements< bigint, RODMM< bigint >, RODMM< bigint > > >;
187 
188 
189 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
190 	havas_min_no_of_elements_plus_min_abs_of_row< bigint, RODMM< bigint >, RODMM< bigint > > >;
191 
192 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
193 	havas_min_no_of_elements_plus_minimal_euclidean_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
194 
195 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
196 	havas_min_no_of_elements_plus_minimal_norm< bigint, RODMM< bigint >, RODMM< bigint > > >;
197 
198 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
199 	havas_min_no_of_elements_plus_sorting_gcd< bigint, RODMM< bigint >, RODMM< bigint > > >;
200 
201 
202 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
203 	Storjohann< bigint, RODMM< bigint >, RODMM< bigint > > >;
204 
205 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
206 	Heuristik< bigint, RODMM< bigint >, RODMM< bigint > > >;
207 
208 
209 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
210 	havas_best_remainder_ext< bigint, RODMM< bigint >, RODMM< bigint > > >;
211 
212 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
213 	havas_euclidean_norm_ext< bigint, RODMM< bigint >, RODMM< bigint > > >;
214 
215 template class havas_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
216 	nf_conf3e< bigint, RODMM< bigint >, RODMM< bigint > > >;
217 
218 
219 template class kannan_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
220 	Standard_normalization< bigint, RODMM< bigint >, RODMM< bigint > > >;
221 
222 template class kannan_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
223 	ChouCollins_normalization< bigint, RODMM< bigint >, RODMM< bigint > > >;
224 
225 template class kannan_kernel< bigint, RODMM< bigint >, RODMM< bigint >,
226 	Jacobson_normalization< bigint, RODMM< bigint >, RODMM< bigint > > >;
227 
228 template class normalization_kernel< bigint, RODMM< bigint >, RODMM< bigint > >;
229 
230 template class Standard_normalization< bigint, RODMM< bigint >, RODMM< bigint > >;
231 template class ChouCollins_normalization< bigint, RODMM< bigint >, RODMM< bigint > >;
232 template class Jacobson_normalization< bigint, RODMM< bigint >, RODMM< bigint > >;
233 
234 //
235 // sparse representation
236 //
237 
238 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
239 	hermite< bigint, COSMM< bigint >, COSMM< bigint > > >;
240 
241 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
242 	Bradley< bigint, COSMM< bigint >, COSMM< bigint > > >;
243 
244 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
245 	Iliopoulos< bigint, COSMM< bigint >, COSMM< bigint > > >;
246 
247 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
248 	opt< bigint, COSMM< bigint >, COSMM< bigint > > >;
249 
250 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
251 	Blankinship< bigint, COSMM< bigint >, COSMM< bigint > > >;
252 
253 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
254 	Best_remainder< bigint, COSMM< bigint >, COSMM< bigint > > >;
255 
256 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
257 	havas_best_remainder< bigint, COSMM< bigint >, COSMM< bigint > > >;
258 
259 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
260 	havas_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
261 
262 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
263 	havas_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
264 
265 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
266 	havas_sorting_gcd< bigint, COSMM< bigint >, COSMM< bigint > > >;
267 
268 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
269 	havas_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > > >;
270 
271 
272 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
273 	havas_min_abs_of_row_plus_minimal_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
274 
275 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
276 	havas_min_abs_of_row_plus_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
277 
278 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
279 	havas_min_abs_of_row_plus_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > > >;
280 
281 
282 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
283 	havas_minimal_norm_plus_min_abs_of_row< bigint, COSMM< bigint >, COSMM< bigint > > >;
284 
285 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
286 	havas_minimal_norm_plus_sorting_gcd< bigint, COSMM< bigint >, COSMM< bigint > > >;
287 
288 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
289 	havas_minimal_norm_plus_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > > >;
290 
291 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
292 	havas_sorting_gcd_plus_minimal_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
293 
294 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
295 	havas_sorting_gcd_plus_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
296 
297 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
298 	havas_sorting_gcd_plus_min_no_of_elements< bigint, COSMM< bigint >, COSMM< bigint > > >;
299 
300 
301 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
302 	havas_min_no_of_elements_plus_min_abs_of_row< bigint, COSMM< bigint >, COSMM< bigint > > >;
303 
304 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
305 	havas_min_no_of_elements_plus_minimal_euclidean_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
306 
307 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
308 	havas_min_no_of_elements_plus_minimal_norm< bigint, COSMM< bigint >, COSMM< bigint > > >;
309 
310 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
311 	havas_min_no_of_elements_plus_sorting_gcd< bigint, COSMM< bigint >, COSMM< bigint > > >;
312 
313 
314 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
315 	Storjohann< bigint, COSMM< bigint >, COSMM< bigint > > >;
316 
317 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
318 	Heuristik< bigint, COSMM< bigint >, COSMM< bigint > > >;
319 
320 
321 template class havas_kernel< long, COSMM< long >, COSMM< bigint >,
322 	havas_best_remainder_ext< long, COSMM< long >, COSMM< bigint > > >;
323 
324 template class havas_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
325 	havas_best_remainder_ext< bigint, COSMM< bigint >, COSMM< bigint > > >;
326 
327 template class havas_kernel< long, COSMM< long >, COSMM< bigint >,
328 	havas_euclidean_norm_ext< long, COSMM< long >, COSMM< bigint > > >;
329 
330 template class havas_kernel< long, COSMM< long >, COSMM< bigint >,
331 	nf_conf3e< long, COSMM< long >, COSMM< bigint > > >;
332 
333 
334 template class kannan_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
335 	Standard_normalization< bigint, COSMM< bigint >, COSMM< bigint > > >;
336 
337 template class kannan_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
338 	ChouCollins_normalization< bigint, COSMM< bigint >, COSMM< bigint > > >;
339 
340 template class kannan_kernel< bigint, COSMM< bigint >, COSMM< bigint >,
341 	Jacobson_normalization< bigint, COSMM< bigint >, COSMM< bigint > > >;
342 
343 template class normalization_kernel< bigint, COSMM< bigint >, COSMM< bigint > >;
344 
345 template class Standard_normalization< bigint, COSMM< bigint >, COSMM< bigint > >;
346 template class ChouCollins_normalization< bigint, COSMM< bigint >, COSMM< bigint > >;
347 template class Jacobson_normalization< bigint, COSMM< bigint >, COSMM< bigint > >;
348 
349 template class COSMM< long >;
350 
351 //
352 // special for transformation matrix computation
353 //
354 
355 template class havas_best_remainder_ext< long, COSMM< long >, RODMM< bigint > >;
356 template class havas_euclidean_norm_ext< long, COSMM< long >, RODMM< bigint > >;
357 template class nf_conf3e< long, COSMM< long >, RODMM< bigint > >;
358 
359 template class havas_kernel< long, COSMM< long >, RODMM< bigint >,
360 	nf_conf3e< long, COSMM< long >, RODMM< bigint > > >;
361 
362 template class havas_kernel< long, COSMM< long >, RODMM< bigint >,
363 	havas_best_remainder_ext< long, COSMM< long >, RODMM< bigint > > >;
364 
365 template class havas_kernel< long, COSMM< long >, RODMM< bigint >,
366 	havas_euclidean_norm_ext< long, COSMM< long >, RODMM< bigint > > >;
367 
368 template class normalization_kernel< long, COSMM< long >, RODMM< bigint > >;
369 template class normalization_kernel< long, COSMM< long >, COSMM< bigint > >;
370 
371 
372 
373 #ifdef LIDIA_NAMESPACE
374 }	// end of namespace LiDIA
375 #endif
376