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
|