Armadillo is a linear algebra library for C++ that makes use of template metaprogramming and delayed evaluation.
Armadillo is an open-source C++ linear algebra library (matrix maths) aiming towards a good balance between speed and ease of use. The syntax is deliberately similar to Matlab.
Integer, floating point and complex numbers are supported, as well as a subset of trigonometric and statistics functions. Various matrix decompositions are provided through optional integration with LAPACK, or one of its high performance drop-in replacements (such as the multi-threaded MKL or ACML libraries).
A delayed evaluation approach is employed (during compile time) to combine several operations into one and reduce (or eliminate) the need for temporaries. This is accomplished through recursive templates and template meta-programming.
This library is useful if C++ has been decided as the language of choice, due to speed and/or integration capabilities. It is distributed under a license that is useful in both open-source and commercial contexts.
Armadillo is primarily developed at NICTA (Australia), with contributions from around the world.
Information about Armadillo is available at http://arma.sourceforge.net.