Armadillo is a high quality C++ linear algebra library useful for development of algorithms in machine learning, pattern recognition, signal processing, bioinformatics, statistics, etc. Armadillo makes extensive use of template meta-programming, recursive templates and template based function overloading. As such, C++ compilers which do not fully implement the C++ standard may not work correctly. The functionality of Armadillo is partly dependent on other libraries: LAPACK, BLAS and ARPACK. The LAPACK and BLAS libraries are used for dense matrices, while the ARPACK library is used for sparse matrices. Armadillo can work without these libraries, but its functionality will be reduced. In particular, basic functionality will be available (eg. matrix addition and multiplication), but things like eigen decomposition or matrix inversion will not be. Matrix multiplication (mainly for big matrices) may not be as fast. As Armadillo is a template library, we recommended that optimisation is enabled during compilation of programs that use Armadillo. For example, for GCC and Clang compilers use -O2 or -O3