Armadillo C++ matrix library / News: Recent posts

new overview article about Armadillo

There is a new overview article about Armadillo, published in the Journal of Open Source Software:

  • Citation details:
    Conrad Sanderson and Ryan Curtin.
    Armadillo: a template-based C++ library for linear algebra.
    Journal of Open Source Software, Vol. 1, pp. 26, 2016.
Posted by Conrad Sanderson 2016-06-17

Armadillo C++ linear algebra: version 7.200

Version 7.200 contains new features, enhancements and speedups.
Available from

  • added .index_min() and .index_max()
  • expanded ind2sub() to handle vectors of indices
  • expanded sub2ind() to handle matrix of subscripts
  • expanded expmat(), logmat() and sqrtmat() to optionally return a bool indicating success
  • faster handling of compound expressions by vectorise()
Posted by Conrad Sanderson 2016-06-06

Armadillo C++ linear algebra: version 7.100

Version 7.100 contains new features, enhancements and speedups.
Available from

Changes since version 6.100:
- added erf(), erfc(), lgamma()
- added .head_slices() and .tail_slices() to subcube views
- added trapz() for numerical integration
- added logmat() for calculating the matrix logarithm
- added regspace() for generating vectors with regularly spaced elements
- added logspace() for generating vectors with logarithmically spaced elements
- added approx_equal() for determining approximate equality
- added shift() for circular shifts of elements
- added sqrtmat() for finding the square root of a matrix
- added conv2() for 2D convolution
- added stand-alone kmeans() function for clustering data
- added trunc()
- added ind2sub() and sub2ind()
- added .for_each() to Mat, Row, Col, Cube and field classes
- added rcond() for estimating the reciprocal condition number
- expanded .save() and .load() with hdf5_binary_trans file type, to save/load data with columns transposed to rows
- expanded sum(), mean(), min(), max() to handle cubes
- expanded Cube class to handle arbitrarily sized empty cubes (eg. 0x5x2)
- extended conv() to optionally provide central convolution
- expanded each_col(), each_row() and each_slice() to handle C++11 lambda functions
- expanded solve() to find approximate solutions for rank-deficient systems
- expanded diagmat() to handle non-square matrices and arbitrary diagonals
- expanded trace() to handle non-square matrices
- faster handling of multiply-and-accumulate by accu() when using Intel MKL, ATLAS or OpenBLAS
- faster handling of non-contiguous submatrix views in compound expressions
- eigs_sym(), eigs_gen() and svds() now use a built-in reimplementation of ARPACK for real (non-complex) matrices; contributed by Yixuan Qiu
- spsolve() now requires SuperLU 5.2

Posted by Conrad Sanderson 2016-05-24

Armadillo C++ linear algebra: version 6.100

Version 6.100 contains new features, speedups and enhancements.
Available from

Changes since version 5.000:

  • faster norm() and normalise() when using Intel MKL, ATLAS or OpenBLAS
  • faster handling of submatrix rows
  • faster clamp()
  • faster flipud()
  • faster row-wise sum(), cumsum() mean(), min(), max()
  • faster sparse sum()
  • faster handling of compound expressions by join_rows() and join_cols()
  • added Schur decomposition: schur()
  • added generalised Schur decomposition: qz()
  • added .has_inf() and .has_nan()
  • added orth() for finding the orthonormal basis of range space
  • added null() for finding the orthonormal basis of null space
  • added .each_slice() for repeated matrix operations on each slice of a cube
  • added find_unique() for finding indices of unique values
  • added diff() for calculating differences between consecutive elements
  • added cumprod() for calculating cumulative product
  • added interp1() for 1D interpolation
  • added .is_sorted() for checking whether a vector or matrix has sorted elements
  • expanded join_slices() to handle joining cubes with matrices
  • expanded .each_col() and .each_row() to handle out-of-place operations
  • expanded sparse matrix class with .set_imag() and .set_real()
  • expanded imag(), real() and conj() to handle sparse matrices
  • expanded diagmat(), reshape() and resize() to handle sparse matrices
  • expanded unique() to handle complex numbers
  • expanded object constructors and generators to handle size() based specification of dimensions
  • expanded element initialisation to handle nested initialiser lists (C++11)
  • fix for k-means clustering in gmm_diag class
  • fixes for handling sparse matrices & sparse submatrix views
  • stricter handling of matrix objects by hist() and histc()
  • advanced constructors for using auxiliary memory now have the default of strict = false
  • Cube class now delays allocation of .slice() related structures until needed
  • updated physical constants to NIST 2014 CODATA values
  • workarounds for bugs in GCC, Intel and MSVC C++ compilers
Posted by Conrad Sanderson 2015-10-02

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks