The 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 and ATLAS libraries. The library employs a delayed evaluation approach (during compile time) to combine several operations into one and reduce (or eliminate) the need for temporaries. Where applicable, the order of operations is optimised. Delayed evaluation and optimisation are achieved through recursive templates and template meta-programming. Due to its approach, Armadillo is related to the uBLAS library, but has a more accessible syntax. Furthermore, as Armadillo has an efficient wrapper of ATLAS and LAPACK functions, it provides machine-dependent optimisations and functionality not present in uBLAS. This library is useful if C++ has been decided as the language of choice (due to speed and/or integration capabilities), rather than another language like Matlab or GNU Octave. It is open source software that is distributed under the LGPL license, making it useful in the development of both open source and commercial software. The project is supported by the Australian NICTA research centre and is hosted by Sourceforge. |