armadillo
Armadillo
C++ linear algebra library

About
License
FAQ
Docs
Speed
Contact
Download

Armadillo is a C++ linear algebra library (matrix maths) aiming towards a good balance between speed and ease of use. 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.

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), rather than another language like Matlab ® or Octave. 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.




NEWS

2010-02-05
Version 0.9.0   “Retoxed Feral”
  • Extended and overhauled expression evaluation framework,
    for more efficient handling of compound expressions
  • There is a small but important API change -- see the docs for details
  • Added a conversion table between Matlab/Octave and Armadillo syntax
  • Added saving/loading of matrices using streams
  • Added log_det(), princomp(), fliplr(), flipud()
  • More accurate var() and stddev()

  • 2010-01-27
    Version 0.8.2   “Colombian Coffee”
  • Added as_scalar(), for forward compatibility with 0.9.x
  • Miscellaneous bugfixes

  • 2009-12-14
    Version 0.8.0   “Restless Critter”
  • Added pinv(), rank(), kron(), prod(), eps(), shuffle()
  • Added ‘running_stat_vec’ class, for on-the-fly statistics of vectors
  • Improvements and bugfixes in handling of submatrix views
  • Speedups for some compound expressions
  • Initial support for dodgy compilers

  • 2009-10-26
    Version 0.7.2   “Tequila Sunrise”
  • Added covariance and correlation functions
  • Added simpler form of lu()
  • Faster repmat() and reshape()
  • Better detection of external libraries during installation

  • 2009-10-07
    Version 0.7.0   “Unshackled Mongrel”
  • Added the Cube class (aka "3D matrix" or a set of matrices with contiguous memory)
  • Added creation of Mat instances using auxiliary memory
  • Added repmat()
  • Bugfixes for det() and lu()

  • earlier news ▾

    2009-06-25
    Version 0.6.12   “Ye Greene Beaste”
  • Added raw_print() and a collection of physical constants
  • Code cleanup for better conformance to the C++ standard
  • Miscellaneous documentation and installation improvements

  • 2009-05-20
    Version 0.6.11
  • Bug fix for solve() when using complex numbers
  • More elaborate class destructors for better debugging of user code
  • Miscellaneous documentation and installation improvements

  • 2009-05-02
    Version 0.6.10
  • Added eigen decomposition of generic (non-symmetric) matrices
  • Function eig() renamed to eig_sym()

  • 2009-04-23
    Version 0.6.8
  • Better installation on MacOS X
  • Colour PPM images can now be loaded as fields of matrices

  • 2009-04-08
    Version 0.6.6
  • Better installation on 64 bit systems, especially when using CMake 2.6
  • Fields of strings can be now loaded & saved as plain text files
  • Bug fix for template detection of combined multiply and addition operations

  • 2009-04-02
    Version 0.6.4
  • Added running_stat class for on-the-fly statistics
  • Renamed main classes for better code readability
  • Performance tweaks, which can result in speedups of 30% for small matrices

  • 2009-03-26
    Version 0.6.2
    Fixes for interactions between matrices with different element types

    2009-03-24
    Version 0.6.0
    Added functionality:
  • solve(), for solving systems of linear equations
  • svd(), singular value decomposition
  • expressions can now have mixed matrix types
  • complex number versions of statistics functions
  • reworked operators, providing more flexibility

  • Bug fixes:
  • sign of scalar produced by det()
  • handling of single row and column submats by statistics functions

  • 2009-03-11
    Version 0.5.2
    Added functionality:
  • subfields
  • sort_index()

  • Bug fixes:
  • pow() applied to integer matrices (gcc < 4.3)
  • multiplication of submats with a scalar
  • missing division operators


  • 2009-03-09
    Version 0.5.0
    Added functionality:
  • Cholesky and QR decompositions
  • element-wise division
  • comparison operators
  • more elegant restriction of template parameters

  • Bug fixes:
  • handling of diagonal matrices created from vectors
  • compilation of examples under MacOS X

  • Other changes:
  • faster matrix inverse
  • license change to LGPL v3+
  • updated and re-arranged documentation
  • easier installation when using the .tar.gz package


  • 2009-01-28
    Version 0.4.0
    Bug fixes and added functionality:
  • easier configuration and installation
  • statistics functions
  • more functions for handling complex numbers

  • 2009-01-16
    Version 0.3.0
    Added functionality:
  • handling of complex numbers as well as other types
  • added trigonometric functions

  • 2008-12-23
    Version 0.2.1
    Fixes for several minor bugs.

    2008-12-12
    Version 0.2.0
    More functionality, bug fixes and improved user documentation.

    2008-11-04
    Version 0.1.0
    Initial proof-of-concept release.



    Sponsors






    Get armadillo at SourceForge.net. Fast, secure and Free Open Source software downloads

    ©2010

    <a href="http://nicta.com.au/people/sandersonc">Conrad Sanderson</a> <a href="http://freshmeat.net/projects/arma">Armadillo C++ Library on Freshmeat</a> <a href="http://nicta.com.au/research/projects/safe_as/armadillo">Armadillo C++ Library on NICTA</a>