Armadillo (C++ library)

It aims to provide efficient and streamlined base calculations, while at the same time having a straightforward and easy-to-use interface.

It supports integer, floating point (single and double precision), complex numbers, and a subset of trigonometric and statistics functions.

The library employs a delayed-evaluation approach (during compile time) to combine several operations into one and reduce (or eliminate) the need for temporaries.

Armadillo is related to the Boost Basic Linear Algebra Subprograms (uBLAS) library, which also uses template metaprogramming.

However, Armadillo builds upon ATLAS and LAPACK libraries, thereby providing machine-dependent optimisations and functions not present in uBLAS.