annotate armadillo-3.900.4/README.txt @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
Chris@49 1 === Contents ===
Chris@49 2
Chris@49 3 1: Introduction
Chris@49 4
Chris@49 5 2: Citation Details
Chris@49 6
Chris@49 7 3: Installation
Chris@49 8 3.0: Preliminaries
Chris@49 9 3.1: Installation on Linux and Mac OS X
Chris@49 10 3.2: Manual Installation / Installation on Windows
Chris@49 11
Chris@49 12 4: Compiling Programs and Linking
Chris@49 13 4.0: Examples
Chris@49 14 4.1: Compiling & Linking on Linux and Mac OS X
Chris@49 15 4.2: Compiling & Linking on Windows
Chris@49 16
Chris@49 17 5: Support for high-speed BLAS & LAPACK replacements
Chris@49 18 5.0: Support for OpenBLAS, Intel MKL and AMD ACML
Chris@49 19 5.1: Support for ATLAS
Chris@49 20
Chris@49 21 6: Documentation / API Reference Manual
Chris@49 22
Chris@49 23 7: FAQs and Bug Reports
Chris@49 24
Chris@49 25 8: Developers and Contributors
Chris@49 26
Chris@49 27 9: License
Chris@49 28
Chris@49 29
Chris@49 30
Chris@49 31
Chris@49 32 === 1: Introduction ===
Chris@49 33
Chris@49 34 Armadillo is a C++ linear algebra library (matrix maths)
Chris@49 35 aiming towards a good balance between speed and ease of use.
Chris@49 36 The syntax is deliberately similar to Matlab.
Chris@49 37
Chris@49 38 Integer, floating point and complex numbers are supported,
Chris@49 39 as well as a subset of trigonometric and statistics functions.
Chris@49 40 Various matrix decompositions are provided through optional
Chris@49 41 integration with LAPACK or high-performance LAPACK-compatible
Chris@49 42 libraries (such as Intel MKL or AMD ACML).
Chris@49 43
Chris@49 44 A delayed evaluation approach is employed (during compile time)
Chris@49 45 to combine several operations into one and reduce (or eliminate)
Chris@49 46 the need for temporaries. This is accomplished through recursive
Chris@49 47 templates and template meta-programming.
Chris@49 48
Chris@49 49 This library is useful for conversion of research code into
Chris@49 50 production environments, or if C++ has been decided as the
Chris@49 51 language of choice, due to speed and/or integration capabilities.
Chris@49 52
Chris@49 53 The library is open-source software, and is distributed under a
Chris@49 54 license that is useful in both open-source and commercial/proprietary
Chris@49 55 contexts.
Chris@49 56
Chris@49 57 Armadillo is primarily developed at NICTA (Australia),
Chris@49 58 with contributions from around the world. More information
Chris@49 59 about NICTA can be obtained from http://nicta.com.au
Chris@49 60
Chris@49 61
Chris@49 62
Chris@49 63 === 2: Citation Details ===
Chris@49 64
Chris@49 65 Please cite the following tech report if you use Armadillo in your
Chris@49 66 research and/or software. Citations are useful for the continued
Chris@49 67 development and maintenance of the library.
Chris@49 68
Chris@49 69 Conrad Sanderson.
Chris@49 70 Armadillo: An Open Source C++ Linear Algebra Library for
Chris@49 71 Fast Prototyping and Computationally Intensive Experiments.
Chris@49 72 Technical Report, NICTA, 2010.
Chris@49 73
Chris@49 74
Chris@49 75
Chris@49 76 === 3.0: Installation: Preliminaries ===
Chris@49 77
Chris@49 78 Armadillo makes extensive use of template meta-programming,
Chris@49 79 recursive templates and template based function overloading.
Chris@49 80 As such, C++ compilers which do not fully implement the C++
Chris@49 81 standard may not work correctly.
Chris@49 82
Chris@49 83 The functionality of Armadillo is partly dependent on other
Chris@49 84 libraries: mainly LAPACK and BLAS. Armadillo can work without
Chris@49 85 LAPACK or BLAS, but its functionality will be reduced.
Chris@49 86 In particular, basic functionality will be available
Chris@49 87 (eg. matrix addition and multiplication), but things like
Chris@49 88 eigen decomposition or matrix inversion will not be.
Chris@49 89 Matrix multiplication (mainly for big matrices) may not be as fast.
Chris@49 90
Chris@49 91 * For automatic installation on Linux and Mac OS X systems,
Chris@49 92 see section 3.1. This installation is also likely to work on
Chris@49 93 other Unix-like systems, such as FreeBSD, NetBSD, OpenBSD,
Chris@49 94 Solaris, CygWin, etc.
Chris@49 95
Chris@49 96 * For manual installation and/or installation on Windows,
Chris@49 97 see section 3.2.
Chris@49 98
Chris@49 99 * If you have a previous version of Armadillo already installed,
Chris@49 100 we recommend removing it before installing a newer version.
Chris@49 101
Chris@49 102
Chris@49 103
Chris@49 104 === 3.1: Installation on Linux and Mac OS X ===
Chris@49 105
Chris@49 106 You can use the manual installation process as described in
Chris@49 107 section 3.2, or the following CMake based automatic installation.
Chris@49 108
Chris@49 109 * Step 1:
Chris@49 110 If CMake is not already be present on your system, download
Chris@49 111 it from http://www.cmake.org
Chris@49 112
Chris@49 113 On major Linux systems (such as Fedora, Ubuntu, Debian, etc),
Chris@49 114 cmake is available as a pre-built package, though it may need
Chris@49 115 to be explicitly installed (using a tool such as PackageKit,
Chris@49 116 yum, rpm, apt, aptitude).
Chris@49 117
Chris@49 118 * Step 2:
Chris@49 119 If you have BLAS and/or LAPACK, install them before installing
Chris@49 120 Armadillo. Under Mac OS X this is not necessary.
Chris@49 121
Chris@49 122 On Linux systems it is recommended that the following libraries
Chris@49 123 are present: LAPACK, BLAS, ATLAS and Boost. LAPACK and BLAS are
Chris@49 124 the most important. If you have ATLAS and Boost, it's also necessary
Chris@49 125 to have the corresponding header files installed.
Chris@49 126
Chris@49 127 For best performance, we recommend using the multi-threaded OpenBLAS
Chris@49 128 library instead of standard BLAS. See http://xianyi.github.com/OpenBLAS/
Chris@49 129
Chris@49 130 * Step 3:
Chris@49 131 Open a shell (command line), change into the directory that was
Chris@49 132 created by unpacking the armadillo archive, and type the following
Chris@49 133 commands:
Chris@49 134
Chris@49 135 cmake .
Chris@49 136 make
Chris@49 137
Chris@49 138 The full stop separated from "cmake" by a space is important.
Chris@49 139 CMake will figure out what other libraries are currently installed
Chris@49 140 and will modify Armadillo's configuration correspondingly.
Chris@49 141 CMake will also generate a run-time armadillo library, which is a
Chris@49 142 combined alias for all the relevant libraries present on your system
Chris@49 143 (eg. BLAS, LAPACK and ATLAS).
Chris@49 144
Chris@49 145 If you need to re-run cmake, it's a good idea to first delete the
Chris@49 146 "CMakeCache.txt" file (not "CMakeLists.txt").
Chris@49 147
Chris@49 148 * Step 4:
Chris@49 149 If you have access to root/administrator/superuser privileges,
Chris@49 150 first enable the privileges (eg. through "su" or "sudo")
Chris@49 151 and then type the following command:
Chris@49 152
Chris@49 153 make install
Chris@49 154
Chris@49 155 If you don't have root/administrator/superuser privileges,
Chris@49 156 type the following command:
Chris@49 157
Chris@49 158 make install DESTDIR=my_usr_dir
Chris@49 159
Chris@49 160 where "my_usr_dir" is for storing C++ headers and library files.
Chris@49 161 Make sure your C++ compiler is configured to use the sub-directories
Chris@49 162 present within this directory.
Chris@49 163
Chris@49 164
Chris@49 165
Chris@49 166 === 3.2: Manual Installation / Installation on Windows ===
Chris@49 167
Chris@49 168 The manual installation is comprised of 3 steps:
Chris@49 169
Chris@49 170 * Step 1:
Chris@49 171 Copy the entire "include" folder to a convenient location
Chris@49 172 and tell your compiler to use that location for header files
Chris@49 173 (in addition to the locations it uses already).
Chris@49 174 Alternatively, you can use the "include" folder directly.
Chris@49 175
Chris@49 176 * Step 2:
Chris@49 177 Modify "include/armadillo_bits/config.hpp" to indicate
Chris@49 178 which libraries are currently available on your system.
Chris@49 179 For example, if you have LAPACK and BLAS (or OpenBLAS) present,
Chris@49 180 uncomment the following lines:
Chris@49 181
Chris@49 182 #define ARMA_USE_LAPACK
Chris@49 183 #define ARMA_USE_BLAS
Chris@49 184
Chris@49 185 * Step 3:
Chris@49 186 If you have LAPACK and/or BLAS present, configure your
Chris@49 187 compiler to link with these libraries.
Chris@49 188
Chris@49 189 If using Linux, link using -llapack -lblas
Chris@49 190 If using Mac OS X, link using -framework Accelerate
Chris@49 191 If using Windows, see section 4.2.
Chris@49 192
Chris@49 193 You can also link with high-speed replacements for LAPACK and BLAS,
Chris@49 194 such as OpenBLAS, or Intel MKL, or AMD ACML. See section 5 for more info.
Chris@49 195
Chris@49 196
Chris@49 197
Chris@49 198 === 4.0: Compiling Programs and Linking: Examples ===
Chris@49 199
Chris@49 200 The "examples" directory contains several quick example programs
Chris@49 201 that use the Armadillo library. If Armadillo was installed manually
Chris@49 202 (ie. according to section 3.2), you will also need to explicitly
Chris@49 203 link your programs with the libraries that were specified in
Chris@49 204 "include/armadillo_bits/config.hpp".
Chris@49 205
Chris@49 206 "example1.cpp" may require the BLAS library or its equivalent.
Chris@49 207 "example2.cpp" requires the LAPACK library or its equivalent
Chris@49 208 (eg. the Accelerate framework on Mac OS X).
Chris@49 209
Chris@49 210 You may get errors at compile or run time if BLAS and/or LAPACK
Chris@49 211 functions are not available.
Chris@49 212
Chris@49 213 NOTE: As Armadillo is a template library, we recommended that
Chris@49 214 optimisation is enabled during compilation. For example,
Chris@49 215 for the GCC compiler use -O1 or -O2
Chris@49 216
Chris@49 217
Chris@49 218
Chris@49 219 === 4.1: Compiling & Linking on Linux and Mac OS X ===
Chris@49 220
Chris@49 221 Please see "examples/Makefile", which may may need to be configured
Chris@49 222 for your system. If Armadillo header files were installed in a
Chris@49 223 non-standard location, you will need to modify "examples/Makefile"
Chris@49 224 to tell the compiler where they are.
Chris@49 225
Chris@49 226 In general, programs which use Armadillo are compiled along these lines:
Chris@49 227 g++ example1.cpp -o example1 -O2 -larmadillo
Chris@49 228
Chris@49 229 (you may also need to specify the include directory via the -I switch)
Chris@49 230
Chris@49 231 If you get linking errors, or if Armadillo was installed manually
Chris@49 232 and you specified that LAPACK and BLAS are available, you will
Chris@49 233 need to explicitly link with LAPACK and BLAS (or their equivalents),
Chris@49 234 for example:
Chris@49 235 g++ example1.cpp -o example1 -O2 -llapack -lblas
Chris@49 236
Chris@49 237 (you may also need to specify the library directory via the -L switch)
Chris@49 238
Chris@49 239 Notes:
Chris@49 240
Chris@49 241 * under most Linux systems, using "-llapack -lblas" should be enough;
Chris@49 242 however, on Ubuntu and Debian you may need to add "-lgfortran"
Chris@49 243
Chris@49 244 * under Mac OS X, try "-framework Accelerate" or "-llapack -lblas"
Chris@49 245 (the Accelerate option is usually the fastest)
Chris@49 246
Chris@49 247 * under the Sun Studio compiler, try "-library=sunperf"
Chris@49 248
Chris@49 249
Chris@49 250
Chris@49 251 === 4.2: Compiling & Linking on Windows ===
Chris@49 252
Chris@49 253 As a courtesy, we've provided pre-compiled 32 bit versions of
Chris@49 254 standard LAPACK and BLAS for Windows, as well as MSVC project
Chris@49 255 files to compile example1.cpp and example2.cpp.
Chris@49 256 The project files are stored in the following folders:
Chris@49 257 examples/example1_win32
Chris@49 258 examples/example2_win32
Chris@49 259
Chris@49 260 The standard 32 bit versions of the LAPACK and BLAS libraries
Chris@49 261 are stored in:
Chris@49 262 examples/lib_win32
Chris@49 263
Chris@49 264 If you're getting messages such as "use of LAPACK needs to be enabled",
Chris@49 265 you will need to manually modify "include/armadillo_bits/config.hpp"
Chris@49 266 to enable the use of LAPACK. See section 3.2 for more information.
Chris@49 267
Chris@49 268 Note that on 64 bit systems (such as Windows 7), dedicated
Chris@49 269 64 bit versions of BLAS and LAPACK are considerably faster.
Chris@49 270 If you don't have a 64 bit BLAS library, it's better to
Chris@49 271 explicitly disable the use of BLAS by defining ARMA_DONT_USE_BLAS
Chris@49 272 before including the armadillo header:
Chris@49 273
Chris@49 274 #define ARMA_DONT_USE_BLAS
Chris@49 275 #include <armadillo>
Chris@49 276
Chris@49 277 The MSCV project files were tested on 32 bit Windows XP with
Chris@49 278 Visual C++ 2008 (Express Edition). You may need to make adaptations
Chris@49 279 for 64 bit systems, later versions of Windows and/or the compiler.
Chris@49 280 For example, you may have to enable or disable the ARMA_BLAS_LONG
Chris@49 281 and ARMA_BLAS_UNDERSCORE macros in "armadillo_bits/config.hpp".
Chris@49 282
Chris@49 283 The pre-compiled versions of LAPACK and BLAS were downloaded from:
Chris@49 284 http://www.fi.muni.cz/~xsvobod2/misc/lapack/
Chris@49 285
Chris@49 286 If the provided libraries don't work for you, or you want more speed,
Chris@49 287 try these versions:
Chris@49 288 http://software.intel.com/en-us/intel-mkl/
Chris@49 289 http://developer.amd.com/tools-and-sdks/cpu-development/amd-core-math-library-acml/
Chris@49 290 http://xianyi.github.com/OpenBLAS/
Chris@49 291 http://www.stanford.edu/~vkl/code/libs.html
Chris@49 292 http://icl.cs.utk.edu/lapack-for-windows/lapack/
Chris@49 293
Chris@49 294 The OpenBLAS, MKL and ACML libraries are generally the fastest.
Chris@49 295 See section 5 for more info on making Armadillo use these libraries.
Chris@49 296
Chris@49 297
Chris@49 298 You can find the original sources for standard BLAS and LAPACK at:
Chris@49 299 http://www.netlib.org/blas/
Chris@49 300 http://www.netlib.org/lapack/
Chris@49 301
Chris@49 302
Chris@49 303 We recommend the following high-quality compilers:
Chris@49 304
Chris@49 305 * GCC (part MinGW)
Chris@49 306 http://www.mingw.org/
Chris@49 307
Chris@49 308 * GCC (part of CygWin)
Chris@49 309 http://www.cygwin.com/
Chris@49 310
Chris@49 311 * Intel C++ compiler
Chris@49 312 http://software.intel.com/en-us/intel-compilers/
Chris@49 313
Chris@49 314 For the GCC compiler, use version 4.0 or later.
Chris@49 315 For the Intel compiler, use version 10.0 or later.
Chris@49 316
Chris@49 317 For best results we also recommend using an operating system
Chris@49 318 that's more reliable and more suitable for heavy duty work,
Chris@49 319 such as Mac OS X or the various flavours of Linux,
Chris@49 320 eg. Scientific Linux: http://www.scientificlinux.org/
Chris@49 321
Chris@49 322
Chris@49 323
Chris@49 324 === 5.0: Support for OpenBLAS, Intel MKL and AMD ACML ===
Chris@49 325
Chris@49 326 Armadillo can use OpenBLAS, or Intel Math Kernel Library (MKL), or the
Chris@49 327 AMD Core Math Library (ACML) as high-speed replacements for BLAS and LAPACK.
Chris@49 328 Generally this just involves linking with the replacement libraries
Chris@49 329 instead of BLAS and LAPACK.
Chris@49 330
Chris@49 331 You may need to make minor modifications to "include/armadillo_bits/config.hpp"
Chris@49 332 in order to make sure Armadillo uses the same style of function names
Chris@49 333 as used by MKL or ACML. For example, the function names might be in capitals.
Chris@49 334
Chris@49 335 On Linux systems, MKL and ACML might be installed in a non-standard
Chris@49 336 location, such as /opt, which can cause problems during linking.
Chris@49 337 Before installing Armadillo, the system should know where the MKL or ACML
Chris@49 338 libraries are located. For example, "/opt/intel/mkl/lib/intel64/".
Chris@49 339 This can be achieved by setting the LD_LIBRARY_PATH environment variable,
Chris@49 340 or for a more permanent solution, adding the directory locations
Chris@49 341 to "/etc/ld.so.conf". It may also be possible to store a text file
Chris@49 342 with the locations in the "/etc/ld.so.conf.d" directory.
Chris@49 343 For example, "/etc/ld.so.conf.d/mkl.conf".
Chris@49 344 If you modify "/etc/ld.so.conf" or create "/etc/ld.so.conf.d/mkl.conf",
Chris@49 345 you will need to run "/sbin/ldconfig" afterwards.
Chris@49 346
Chris@49 347 Example of the contents of "/etc/ld.so.conf.d/mkl.conf" on a RHEL 6 system,
Chris@49 348 where Intel MKL version 11.0.3 is installed in "/opt/intel":
Chris@49 349
Chris@49 350 /opt/intel/lib/intel64
Chris@49 351 /opt/intel/mkl/lib/intel64
Chris@49 352
Chris@49 353 The default installations of ACML 4.4.0 and MKL 10.2.2.025 are known
Chris@49 354 to have issues with SELinux, which is turned on by default in Fedora
Chris@49 355 (and possibly RHEL). The problem may manifest itself during run-time,
Chris@49 356 where the run-time linker reports permission problems.
Chris@49 357 It is possible to work around the problem by applying an appropriate
Chris@49 358 SELinux type to all ACML and MKL libraries.
Chris@49 359
Chris@49 360 If you have ACML or MKL installed and they are persistently giving
Chris@49 361 you problems during linking, you can disable the support for them
Chris@49 362 by editing the "CMakeLists.txt" file, deleting "CMakeCache.txt" and
Chris@49 363 re-running the CMake based installation. Specifically, comment out
Chris@49 364 the lines containing:
Chris@49 365 INCLUDE(ARMA_FindMKL)
Chris@49 366 INCLUDE(ARMA_FindACMLMP)
Chris@49 367 INCLUDE(ARMA_FindACML)
Chris@49 368
Chris@49 369
Chris@49 370
Chris@49 371 === 5.1: Support for ATLAS ===
Chris@49 372
Chris@49 373 Armadillo can use the ATLAS library for faster versions of
Chris@49 374 certain LAPACK and BLAS functions. Not all ATLAS functions are
Chris@49 375 currently used, and as such LAPACK should still be installed.
Chris@49 376
Chris@49 377 The minimum recommended version of ATLAS is 3.8.
Chris@49 378 Old versions (eg. 3.6) can produce incorrect results
Chris@49 379 as well as corrupting memory, leading to random crashes.
Chris@49 380
Chris@49 381 Users of Ubuntu and Debian based systems should explicitly
Chris@49 382 check that version 3.6 is not installed. It's better to
Chris@49 383 remove the old version and use the standard LAPACK library.
Chris@49 384
Chris@49 385
Chris@49 386
Chris@49 387 === 6: Documentation / API Reference Manual ===
Chris@49 388
Chris@49 389 A reference manual (documentation of APIs) is available at
Chris@49 390
Chris@49 391 http://arma.sourceforge.net/docs.html
Chris@49 392
Chris@49 393 and in the "docs.html" file in this archive,
Chris@49 394 which can be viewed with a web browser.
Chris@49 395
Chris@49 396 The documentation explains how to use Armadillo's
Chris@49 397 classes and functions, with snippets of example code.
Chris@49 398
Chris@49 399
Chris@49 400
Chris@49 401 === 7: FAQs and Bug Reports ===
Chris@49 402
Chris@49 403 Answers to Frequently Asked Questions (FAQs) can be found at:
Chris@49 404
Chris@49 405 http://arma.sourceforge.net/faq.html
Chris@49 406
Chris@49 407 This library has gone through extensive testing and
Chris@49 408 has been successfully used in production environments.
Chris@49 409 However, as with almost all software, it's impossible
Chris@49 410 to guarantee 100% correct functionality.
Chris@49 411
Chris@49 412 If you find a bug in the library (or the documentation),
Chris@49 413 we are interested in hearing about it. Please make a
Chris@49 414 _small_ _self-contained_ program which exposes the bug
Chris@49 415 and send the program source (as well as the bug description)
Chris@49 416 to the developers. The developers' contact details are at:
Chris@49 417
Chris@49 418 http://arma.sourceforge.net/contact.html
Chris@49 419
Chris@49 420
Chris@49 421
Chris@49 422 === 8: Developers and Contributors ===
Chris@49 423
Chris@49 424 Main sponsoring organisation:
Chris@49 425 - NICTA
Chris@49 426 http://nicta.com.au
Chris@49 427
Chris@49 428 Main developers:
Chris@49 429 - Conrad Sanderson - http://itee.uq.edu.au/~conrad/
Chris@49 430 - Ryan Curtin
Chris@49 431 - Ian Cullinan
Chris@49 432 - Dimitrios Bouzas
Chris@49 433 - Stanislav Funiak
Chris@49 434
Chris@49 435 Contributors:
Chris@49 436 - Matthew Amidon
Chris@49 437 - Eric R. Anderson
Chris@49 438 - Benoît Bayol
Chris@49 439 - Salim Bcoin
Chris@49 440 - Justin Bedo
Chris@49 441 - Evan Bollig
Chris@49 442 - Darius Braziunas
Chris@49 443 - Filip Bruman
Chris@49 444 - Ted Campbell
Chris@49 445 - James Cline
Chris@49 446 - Chris Cooper
Chris@49 447 - Clement Creusot
Chris@49 448 - Chris Davey
Chris@49 449 - Dirk Eddelbuettel
Chris@49 450 - Romain Francois
Chris@49 451 - Michael McNeil Forbes
Chris@49 452 - Piotr Gawron
Chris@49 453 - Charles Gretton
Chris@49 454 - Benjamin Herzog
Chris@49 455 - Edmund Highcock
Chris@49 456 - Szabolcs Horvat
Chris@49 457 - Friedrich Hust
Chris@49 458 - Kshitij Kulshreshtha
Chris@49 459 - Oka Kurniawan
Chris@49 460 - Simen Kvaal
Chris@49 461 - David Lawrence
Chris@49 462 - Jussi Lehtola
Chris@49 463 - Jeremy Mason
Chris@49 464 - Nikolay Mayorov
Chris@49 465 - Carlos Mendes
Chris@49 466 - Sergey Nenakhov
Chris@49 467 - Artem Novikov
Chris@49 468 - Martin Orlob
Chris@49 469 - Ken Panici
Chris@49 470 - Adam Piątyszek
Chris@49 471 - Jayden Platell
Chris@49 472 - Vikas Reddy
Chris@49 473 - Ola Rinta-Koski
Chris@49 474 - Boris Sabanin
Chris@49 475 - James Sanders
Chris@49 476 - Alexander Scherbatey
Chris@49 477 - Gerhard Schreiber
Chris@49 478 - Ruslan Shestopalyuk
Chris@49 479 - Shane Stainsby
Chris@49 480 - Petter Strandmark
Chris@49 481 - Eric Jon Sundstrom
Chris@49 482 - Paul Torfs
Chris@49 483 - Martin Uhrin
Chris@49 484 - Simon Urbanek
Chris@49 485 - Juergen Wiest
Chris@49 486 - Arnold Wiliem
Chris@49 487 - Yong Kang Wong
Chris@49 488 - Buote Xu
Chris@49 489 - Sean Young
Chris@49 490
Chris@49 491
Chris@49 492
Chris@49 493 === 9: License ===
Chris@49 494
Chris@49 495 Unless specified otherwise, the Mozilla Public License v2.0 is used.
Chris@49 496 See the "LICENSE.txt" file for license details.
Chris@49 497
Chris@49 498 The file "include/armadillo_bits/fft_engine.hpp" is licensed under
Chris@49 499 both the Mozilla Public License v2.0 and a 3-clause BSD license.
Chris@49 500 See "include/armadillo_bits/fft_engine.hpp" for license details.
Chris@49 501
Chris@49 502