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