Armadillo Changelog

What's new in Armadillo 7.200.1

Jun 6, 2016
  • 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()

New in Armadillo 7.100.3 (May 27, 2016)

  • added erf(), erfc(), lgamma()
  • added .head_slices() and .tail_slices() to subcube views
  • spsolve() now requires SuperLU 5.2
  • eigs_sym(), eigs_gen() and svds() now use a built-in reimplementation of ARPACK for real (non-complex) matrices; contributed by Yixuan Qiu

New in Armadillo 6.700.3 (Apr 5, 2016)

  • added logmat() for calcuating 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 trapz() for numerical integration
  • expanded .save() and .load() with hdf5_binary_trans file type, to save/load data with columns transposed to rows

New in Armadillo 6.700.1 Test (Mar 28, 2016)

  • added logmat() for calcuating the matrix logarithm
  • added regspace() for generating vectors with regularly spaced elements
  • added approx_equal() for determining approximate equality

New in Armadillo 6.600.4 (Mar 15, 2016)

  • expanded sum(), mean(), min(), max() to handle cubes
  • expanded Cube class to handle arbitrarily sized empty cubes (eg. 0x5x2)
  • added shift() for circular shifts of elements
  • added sqrtmat() for finding the square root of a matrix
  • fix for gmm_diag when using Mahalanobis distance

New in Armadillo 6.600.1 Test (Feb 29, 2016)

  • expanded sum(), mean(), min(), max() to handle cubes
  • expanded Cube class to handle arbitrarily sized empty cubes (eg. 0x5x2)

New in Armadillo 6.500.2 Test (Jan 20, 2016)

  • added conv2() for 2D convolution
  • added stand-alone kmeans() function for clustering data
  • extended conv() to optionally provide central convolution
  • faster handling of multiply-and-accumulate by accu()

New in Armadillo 6.500.1 Test (Jan 18, 2016)

  • added conv2() for 2D convolution
  • added stand-alone kmeans() function for clustering data
  • extended conv() to optionally provide central convolution

New in Armadillo 6.400 (Jan 13, 2016)

  • expanded each_col(), each_row() and each_slice() to handle C++11 lambda functions
  • added ind2sub() and sub2ind()
  • fixes for corner cases in gmm_diag class

New in Armadillo 6.300 (Jan 13, 2016)

  • expanded solve() to find approximate solutions for rank-deficient systems
  • faster handling of non-contiguous submatrix views in compound expressions
  • added .for_each() to Mat, Row, Col, Cube and field classes
  • added rcond() for estimating the reciprocal condition number
  • fixes for spsolve(), eigs_sym(), eigs_gen(), svds()

New in Armadillo 6.200 (Jan 13, 2016)

  • expanded diagmat() to handle non-square matrices and arbitrary diagonals
  • expanded trace() to handle non-square matrices
  • correction for datum::Z_0 constant

New in Armadillo 6.100 (Jan 13, 2016)

  • faster norm() and normalise() when using Intel MKL, ATLAS or OpenBLAS
  • added Schur decomposition: schur()
  • 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
  • expanded join_slices() to handle joining cubes with matrices

New in Armadillo 5.600 (Jan 13, 2016)

  • expanded .each_col() and .each_row() to handle out-of-place operations
  • added .each_slice() for repeated matrix operations on each slice of a cube
  • faster handling of compound expressions by join_rows() and join_cols()

New in Armadillo 5.500 (Jan 13, 2016)

  • expanded object constructors and generators to handle size() based specification of dimensions
  • faster handling of submatrix rows
  • faster clamp()
  • fixes for handling sparse matrices

New in Armadillo 5.400.3 (Sep 1, 2015)

  • added find_unique() for finding indices of unique values
  • added diff() for calculating differences between consecutive elements
  • added cumprod() for calculating cumulative product
  • added null() for finding the orthonormal basis of null space
  • expanded interp1() to handle repeated locations
  • expanded unique() to handle complex numbers
  • faster flipud()
  • faster row-wise cumsum()
  • fix for k-means clustering in gmm_diag class

New in Armadillo 5.300.4 (Aug 13, 2015)

  • added generalised Schur decomposition: qz()
  • added .has_inf() and .has_nan()
  • expanded interp1() to handle out-of-domain locations
  • 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
  • faster sparse sum()
  • faster row-wise sum(), mean(), min(), max()
  • updated physical constants to NIST 2014 CODATA values
  • fixes for handling sparse submatrix views
  • Armadillo can make use of GPUs by linking with NVIDIA NVBLAS (a GPU-accelerated implementation of BLAS),
  • or by linking with AMD ACML (which can use GPUs via OpenCL)

New in Armadillo 5.200 (May 25, 2015)

  • New features and enhancements:
  • added orth() for finding the orthonormal basis of the range space of a matrix
  • expanded element initialisation to handle nested initialiser lists (C++11)
  • workarounds for bugs in GCC, Intel and MSVC C++ compilers

New in Armadillo 5.100 (May 11, 2015)

  • added interp1() for 1D interpolation
  • added .is_sorted() for checking whether a vector or matrix has sorted elements
  • updated physical constants to NIST 2010 CODATA values

New in Armadillo 5.000.0 (Apr 14, 2015)

  • added spsolve() for solving sparse systems of linear equations
  • added svds() for singular value decomposition of sparse matrices
  • added nonzeros() for extracting non-zero values from matrices
  • added handling of diagonal views by sparse matrices
  • expanded repmat() to handle sparse matrices
  • expanded join_rows() and join_cols() to handle sparse matrices
  • sort_index() and stable_sort_index() have been placed in the delayed operations framework for increased efficiency
  • use of 64 bit integers is automatically enabled when using a C++11 compiler
  • workaround for a bug in recent releases of Apple Xcode
  • workaround for a bug in LAPACK 3.5

New in Armadillo 4.650.0 (Feb 18, 2015)

  • Version 4.650 contains speedups and feature enhancements:
  • added randg() for generating random values from gamma distributions (C++11 only)
  • added .head_rows() and .tail_rows() to submatrix views
  • added .head_cols() and .tail_cols() to submatrix views
  • expanded eigs_sym() to optionally calculate eigenvalues with smallest/largest algebraic values
  • fixes for handling of sparse matrices

New in Armadillo 4.649 Pre 1 (Feb 17, 2015)

  • Version 4.649 preview 1 contains speedups and feature enhancements:
  • added randg() for generating random values from gamma distributions (C++11 only)
  • added .head_rows() and .tail_rows() to submatrix views
  • added .head_cols() and .tail_cols() to submatrix views
  • expanded eigs_sym() to optionally calculate eigenvalues with smallest/largest algebraic values

New in Armadillo 4.600.2 (Jan 9, 2015)

  • Contains speedups as well as better detection of ATLAS and OpenBLAS libraries.

New in Armadillo 4.600.0 (Dec 27, 2014)

  • Version 4.600 contains speedups and feature enhancements.
  • added .head() and .tail() to submatrix views
  • faster matrix transposes within compound expressions
  • faster accu() and norm() when compiling with -O3 -ffast-math -march=native (gcc and clang)
  • workaround for a bug in the gcc 4.4 compiler

New in Armadillo 4.599 Alpha (Dec 23, 2014)

  • added .head() and .tail() to submatrix views
  • faster matrix transposes within compound expressions
  • faster accu() when compiling with -O3 -ffast-math -march=native (gcc and clang)

New in Armadillo 4.550.2 (Dec 19, 2014)

  • Update 4.550.2 contains a workaround for a bug in GCC 4.4

New in Armadillo 4.550.0 (Nov 22, 2014)

  • Changes:
  • Added matrix exponential function: expmat()
  • Faster .log_p() and .avg_log_p() functions in the gmm_diag class when compiling with OpenMP enabled
  • Faster handling of in-place addition/subtraction of expressions with an outer product

New in Armadillo 4.500.0 (Oct 30, 2014)

  • Changes:
  • faster handling of complex vectors by norm()
  • expanded chol() to optionally specify output matrix as upper or lower triangular
  • better handling of non-finite values when saving matrices as text files

New in Armadillo 4.450.0 (Sep 19, 2014)

  • faster handling of matrix transposes within compound expressions
  • expanded symmatu()/symmatl() to optionally disable taking the complex conjugate of elements
  • expanded sort_index() to handle complex vectors
  • expanded the gmm_diag class with functions to generate random samples

New in Armadillo 4.400.0 (Aug 19, 2014)

  • added gmm_diag class for statistical modelling using Gaussian Mixture Models;
  • includes multi-threaded implementation of k-means and Expectation-Maximisation for parameter estimation
  • added clamp() for clamping values to be between lower and upper limits
  • expanded batch insertion constructors for sparse matrices to add values at repeated locations
  • faster handling of subvectors by dot()
  • faster handling of aliasing by submatrix views

New in Armadillo 4.320.2 (Aug 18, 2014)

  • expanded eigs_sym() and eigs_gen() to use an optional tolerance parameter
  • expanded eig_sym() to automatically fall back to standard decomposition method if divide-and-conquer fails
  • automatic installer enables use of C++11 random number generator when using gcc 4.8.3+ in C++11 mode

New in Armadillo 4.319 Beta 1 (Jul 1, 2014)

  • expanded eigs_sym() and eigs_gen() to use an optional tolerance parameter
  • expanded eig_sym() to automatically fall back to standard decomposition method if divide-and-conquer fails
  • automatic installer enables use of C++11 random number generator when using gcc 4.8.3+ in C++11 mode

New in Armadillo 4.300.2 (May 12, 2014)

  • fix for detection of HDF5 library during automatic installation
  • faster find()

New in Armadillo 4.300.0 (May 3, 2014)

  • faster find()
  • added find_finite() and find_nonfinite() for finding indices of finite and non-finite elements
  • expressions X=inv(A)*B*C and X=A.i()*B*C are automatically converted to X=solve(A,B*C)
  • cmake-based installer enables use of C++11 random number generator when using gcc 4.9+ in C++11 mode

New in Armadillo 4.200.0 (Apr 7, 2014)

  • faster transpose of sparse matrices
  • more efficient handling of aliasing during matrix multiplication
  • faster inverse of matrices marked as diagonal

New in Armadillo 4.149 Alpha 1 (Mar 27, 2014)

  • faster transpose of sparse matrices
  • more efficient handling of aliasing during matrix multiplication
  • faster inverse of matrices marked as diagonal

New in Armadillo 4.100.2 (Mar 7, 2014)

  • fix for handling null vectors by normalise()
  • fix for memory handling by sparse matrices

New in Armadillo 4.100.0 (Feb 28, 2014)

  • added normalise() for normalising vectors to unit p-norm
  • extended the field class to handle 3D layout
  • extended eigs_sym() and eigs_gen() to obtain eigenvalues of various forms (eg. largest or smallest magnitude)
  • automatic SIMD vectorisation of elementary expressions (eg. matrix addition) when using Clang 3.4+ with -O3 optimisation
  • faster handling of sparse submatrix views
  • workaround for a bug in LAPACK 3.4

New in Armadillo 4.001 Alpha 3 (Feb 25, 2014)

  • extended the field class to handle 3D layout
  • extended eigs_sym() and eigs_gen() to obtain eigenvalues of various forms (eg. largest or smallest magnitude)
  • added normalise() for normalising vectors to unit p-norm
  • automatic SIMD vectorisation of elementary expressions (eg. matrix addition) when using Clang 3.4+ with -O3 optimisation
  • faster handling of sparse submatrix views

New in Armadillo 4.000.4 (Feb 13, 2014)

  • fix for randi() generating out-of-interval values
  • fix for saving field objects
  • workaround for a bug in the Intel compiler

New in Armadillo 4.000.3 (Feb 6, 2014)

  • fix for randi() generating out-of-interval values
  • fix for saving field objects
  • workaround for a bug in the Intel compiler

New in Armadillo 4.000.1 (Jan 15, 2014)

  • fix for randi() generating out-of-interval values
  • workaround for a bug in the Intel compiler

New in Armadillo 4.000.0 (Jan 7, 2014)

  • added eigen decompositions of sparse matrices: eigs_sym() and eigs_gen()
  • added eigen decomposition for pair of matrices: eig_pair()
  • added simpler forms of eig_gen()
  • added condition number of matrices: cond()
  • expanded find() to handle cubes
  • expanded subcube views to access elements specified in a vector
  • template argument for running_stat_vec expanded to accept vector types
  • more robust fast inverse of 4x4 matrices
  • faster divide-and-conquer decompositions are now used by default for eig_sym(), pinv(), princomp(), rank(), svd(), svd_econ()
  • the form inv(sympd(X)) no longer assumes that X is positive definite; use inv_sympd() instead
  • added MEX connector for interfacing Octave/Matlab with Armadillo matrices (contributed by George Yammine)

New in Armadillo 3.995 Alpha 1 (Jan 3, 2014)

  • added eigen decompositions of sparse matrices: eigs_sym() and eigs_gen()
  • added eigen decomposition for pair of matrices: eig_pair()
  • added simpler forms of eig_gen()
  • added condition number of matrices: cond()
  • expanded find() to handle cubes
  • expanded subcube views to access elements specified in a vector
  • template argument for running_stat_vec expanded to accept vector types
  • more robust fast inverse of 4x4 matrices
  • faster divide-and-conquer decompositions are now used by default for eig_sym(), pinv(), princomp(), rank(), svd(), svd_econ()
  • special handling of inv(sympd(X)) has been removed; use inv_sympd() instead

New in Armadillo 3.930.0 (Dec 7, 2013)

  • added divide-and-conquer variant of svd_econ(), for faster SVD
  • added divide-and-conquer variant of pinv(), for faster pseudo-inverse
  • added element-wise variants of min() and max()
  • added size() based specifications of submatrix view sizes
  • added randi() for generating matrices with random integer values
  • added more intuitive specification of sort direction in sort() and sort_index()
  • added more intuitive specification of method in det(), .i(), inv() and solve()
  • added more precise timer for the wall_clock class when using C++11

New in Armadillo 3.920.3 (Nov 22, 2013)

  • fix for handling of tiny matrices by .swap()
  • minor fix for linking with ATLAS

New in Armadillo 3.920.2 (Oct 14, 2013)

  • minor fix for linking with ATLAS

New in Armadillo 3.920.0 (Sep 27, 2013)

  • faster .zeros()
  • faster round(), exp2() and log2() when using C++11
  • added signum function: sign()
  • added move constructors when using C++11
  • added 2D fast Fourier transform: fft2()
  • added .tube() for easier extraction of vectors and subcubes from cubes
  • added specification of a fill type during construction of Mat, Col, Row and Cube classes, eg. mat X(4, 5, fill::zeros)

New in Armadillo 3.910.1 (Sep 11, 2013)

  • minor fix for handling of complex matrices by braindead compilers (MSVC)

New in Armadillo 3.910.0 (Aug 13, 2013)

  • Faster multiplication of a matrix with a transpose of itself, ie. X*X.t() and X.t()*X
  • Added vectorise() for reshaping matrices into vectors
  • Added all() and any() for indicating presence of elements satisfying a relational condition

New in Armadillo 3.900.7 (Aug 1, 2013)

  • minor fix for inplace reshape()
  • minor corrections for compilation issues under GCC 4.8+ and MSVC

New in Armadillo 3.900.4 (Jun 13, 2013)

  • minor corrections for compilation issues under GCC 4.8+ and MSVC

New in Armadillo 3.900.3 (Jun 12, 2013)

  • minor corrections for compilation issues under GCC 4.8+ and MSVC

New in Armadillo 3.900.0 (Jun 4, 2013)

  • added automatic SSE2 vectorisation of elementary expressions (eg. matrix addition) when using GCC 4.7+ with -O3 optimisation
  • added support for saving & loading of cubes in HDF5 format, contributed by Szabolcs Horvat
  • faster median(), contributed by Ruslan Shestopalyuk
  • faster handling of compound expressions with transposes of submatrix rows
  • faster handling of compound expressions with transposes of complex vectors

New in Armadillo 3.820.1 (May 20, 2013)

  • added detection of OpenBLAS during installation (OpenBLAS is a high performance implementation of BLAS, greatly speeding up matrix multiplication)

New in Armadillo 3.820.0 (May 13, 2013)

  • faster as_scalar() for compound expressions
  • faster transpose of small vectors
  • faster matrix-vector product for small vectors
  • faster multiplication of small fixed size matrices

New in Armadillo 3.819.0 (May 8, 2013)

  • minor fix for initialisation of sparse matrices
  • minor fix for linking with MKL on Ubuntu systems

New in Armadillo 3.810.1 (Apr 23, 2013)

  • minor fix for linking with MKL on Ubuntu systems

New in Armadillo 3.810.0 (Apr 19, 2013)

  • added fast Fourier transform: fft()
  • added handling of .imbue() and .transform() by submatrices and subcubes
  • added batch insertion constructors for sparse matrices
  • minor fix for multiplication of complex sparse matrices
  • better detection of recent Intel MKL versions during installation

New in Armadillo 3.800.2 (Mar 25, 2013)

  • minor fix for installation on Mac OS X systems

New in Armadillo 3.800.1 (Mar 12, 2013)

  • workaround for a bug in ATLAS 3.8 on 64 bit systems
  • faster matrix-vector multiply for small matrices

New in Armadillo 3.800.0 (Mar 1, 2013)

  • Armadillo is now licensed using the Mozilla Public License 2.0
  • added .imbue() for filling a matrix/cube with values provided by a functor or lambda expression
  • added .swap() for swapping contents with another matrix
  • added .transform() for transforming a matrix/cube using a functor or lambda expression
  • added round() for rounding matrix elements towards nearest integer
  • faster find()
  • fixes for handling non-square matrices by qr() and qr_econ()
  • minor fixes for handling empty matrices
  • reduction of pedantic compiler warnings

New in Armadillo 3.6.3 (Feb 20, 2013)

  • faster find()
  • minor fix for non-contiguous submatrix views to handle empty vectors of indices
  • reduction of pedantic compiler warning

New in Armadillo 3.6.2 (Jan 29, 2013)

  • faster determinant for matrices marked as diagonal or triangular
  • more fine-grained handling of 64 bit integers

New in Armadillo 3.6.1 (Dec 17, 2012)

  • faster trace()
  • fix for handling sparse matrices by dot()
  • fixes for interactions between sparse and dense matrices

New in Armadillo 3.6.0 (Dec 7, 2012)

  • faster handling of compound expressions with submatrices and subcubes
  • added support for loading matrices as text files with NaN and Inf elements
  • added stable_sort_index(), which preserves the relative order of elements with equivalent values
  • added handling of sparse matrices by mean(), var(), norm(), abs(), square(), sqrt()
  • added saving and loading of sparse matrices in arma_binary format

New in Armadillo 3.4.4 (Nov 2, 2012)

  • fix for handling complex numbers by sparse matrices
  • fix for minor memory leak by sparse matrices

New in Armadillo 3.4.3 (Oct 3, 2012)

  • fix for aliasing issue in diagmat()
  • fix for speye() signature
  • fixes for handling empty sparse matrices
  • minor fixes for handling sparse submatrix views
  • minor speedups for sparse matrices
  • workaround for a bug in the Mac OS X accelerate framework
  • added documentation for saving & loading matrices in HDF5 format
  • faster dot() and cdot() for complex numbers

New in Armadillo 3.4.2 (Sep 25, 2012)

  • minor fixes for handling sparse submatrix views
  • minor speedups for sparse matrices

New in Armadillo 3.4.1 (Sep 18, 2012)

  • workaround for a bug in the Mac OS X accelerate framework
  • fixes for handling empty sparse matrices
  • added documentation for saving & loading matrices in HDF5 format
  • faster dot() and cdot() for complex numbers

New in Armadillo 3.4.0 (Sep 6, 2012)

  • added economical QR decomposition: qr_econ()
  • added .each_col() & .each_row() for vector operations repeated on each column or row
  • added preliminary support for sparse matrices, contributed by Ryan Curtin et al. (Georgia Institute of Technology)
  • faster singular value decomposition via divide-and-conquer algorithm
  • faster .randn()

New in Armadillo 3.3.92 (Sep 4, 2012)

  • faster singular value decomposition via "divide and conquer" algorithm
  • faster .randn()
  • added economical QR decomposition: qr_econ()
  • added .each_col() & .each_row() for vector operations repeated on each column or row
  • added preliminary support for sparse matrices, contributed by Ryan Curtin et al.

New in Armadillo 3.3.91 (Aug 30, 2012)

  • faster singular value decomposition via "divide and conquer" algorithm
  • economical QR decomposition: qr_econ()
  • .each_col() & .each_row() for vector operations repeated on each column or row
  • preliminary support for sparse matrices, contributed by Ryan Curtin, James Cline and Matthew Amidon (Georgia Institute of Technology)

New in Armadillo 3.2.4 (Jul 11, 2012)

  • workaround for a regression (bug) in GCC 4.7.0 and 4.7.1

New in Armadillo 3.2.3 (Jun 29, 2012)

  • minor correction for declaration of fixed size vectors and matrices

New in Armadillo 3.2.2 (Jun 1, 2012)

  • minor fix for compiling without debugging enabled (aka release mode)
  • better detection of ATLAS during installation on Fedora and Red Hat systems

New in Armadillo 3.2.1 (May 28, 2012)

  • minor fix for compiling without debugging enabled (aka release mode)

New in Armadillo 3.2 (May 22, 2012)

  • faster eigen decomposition via "divide and conquer" algorithm
  • faster transpose of vectors and compound expressions
  • faster handling of diagonal views
  • faster handling of tiny fixed size vectors (≤ 4 elements)
  • added unique(), for finding unique elements of a matrix

New in Armadillo 3.0.3 (May 3, 2012)

  • fixes for inplace transpose of complex number matrices
  • fixes for complex number version of svd_econ()
  • fixes for potential aliasing issues with submatrix views

New in Armadillo 3.0.2 (Apr 19, 2012)

  • fixes for handling diagonal matrices

New in Armadillo 3.0.1 (Apr 12, 2012)

  • fixes for compilation errors
  • fixes for potential aliasing issues

New in Armadillo 3.0.0 (Apr 10, 2012)

  • added non-contiguous submatrix views
  • added shorthand for inverse: .i()
  • added hist() and histc()
  • faster repmat()
  • faster handling of submatrix views with one row or column
  • faster generation of random numbers
  • faster element access in fixed size matrices
  • better detection of vector expressions by sum(), cumsum(), prod(), min(), max(), mean(), median(), stddev(), var()
  • expressions X=A.i()*B and X=inv(A)*B are automatically converted to X=solve(A,B)

New in Armadillo 2.99.4 (Apr 4, 2012)

  • fixes for handling expressions with fixed size matrices

New in Armadillo 2.99.3 (Apr 2, 2012)

  • faster repmat()
  • workarounds for braindead compilers (eg. Visual Studio)

New in Armadillo 2.99.2 (Mar 29, 2012)

  • added .i()
  • much faster handling of .col() and .row()
  • expressions X=A.i()*B and X=inv(A)*B are automatically converted to X=solve(A,B)

New in Armadillo 2.99.1 (Mar 19, 2012)

  • added non-contiguous submatrix views
  • added hist() and histc()
  • faster handling of submatrix views
  • faster generation of random numbers
  • faster element access in fixed size matrices
  • better detection of vector expressions by sum(), cumsum(), prod(), min(), max(), mean(), median(), stddev(), var()

New in Armadillo 2.4.4 (Mar 5, 2012)

  • fixes for qr() and syl()
  • more portable wall_clock class
  • faster relational operators on submatrices

New in Armadillo 2.4.2 (Dec 12, 2011)

  • clarified documentation for .reshape()
  • fix for handling of empty matrices by .resize()

New in Armadillo 2.4.1 (Dec 8, 2011)

  • added .resize()
  • fix for vector initialisation

New in Armadillo 2.4.0 (Dec 5, 2011)

  • added shorter forms of transposes: .t() and .st()
  • added optional use of 64 bit indices, allowing matrices to have more than 4 billion elements
  • added experimental support for C++11 initialiser lists
  • faster pinv()
  • faster inplace transpose
  • faster handling of expressions with diagonal views
  • fixes for handling expressions with aliasing and submatrices
  • fixes for linking on Ubuntu and Debian systems
  • fixes for inconsistencies in interactions between matrices and cubes
  • refactored code to eliminate warnings when using the Clang C++ compiler
  • .print_trans() and .raw_print_trans() are deprecated

New in Armadillo 2.3.92 (Nov 28, 2011)

  • fixes for linking on Ubuntu and Debian systems
  • fixes for inconsistencies in interactions between matrices and cubes

New in Armadillo 2.3.91 (Nov 14, 2011)

  • added shorter forms of transposes: .t() and .st()
  • added optional use of 64 bit indices, allowing matrices to have more than 4 billion elements
  • added experimental support for C++11 initialiser lists
  • faster pinv()
  • faster inplace transpose
  • bugfixes for handling expressions with aliasing and submatrices
  • refactored code to eliminate warnings when using the Clang C++ compiler
  • .print_trans() and .raw_print_trans() are deprecated

New in Armadillo 2.2.3 (Aug 27, 2011)

  • fix for speed issue in as_scalar()

New in Armadillo 2.2.1 (Aug 2, 2011)

  • faster multiplication of small matrices
  • faster trans()
  • faster handling of submatrices by norm()
  • added economical singular value decomposition: svd_thin()
  • added circ_toeplitz()
  • added .is_colvec() & .is_rowvec()
  • fixes for handling of complex numbers by cov(), cor(), running_stat_vec

New in Armadillo 2.2.0 (Aug 2, 2011)

  • faster multiplication of small matrices
  • faster trans()
  • faster handling of submatrices by norm()
  • added economical singular value decomposition: svd_thin()
  • added circ_toeplitz()
  • added .is_colvec() & .is_rowvec()
  • fixes for handling of complex numbers by cov() & running_stat_vec

New in Armadillo 2.1.91 (Jul 22, 2011)

  • faster multiplication of small matrices
  • faster trans()
  • faster handling of submatrices by norm()
  • added economical singular value decomposition: svd_thin()
  • added circ_toeplitz()
  • added .is_colvec() & .is_rowvec()

New in Armadillo 2.0.2 (Jul 16, 2011)

  • fix for handling of conjugate transpose by as_scalar()
  • fix for handling of aliasing by diagmat()
  • fix for handling of empty matrices by symmatu()/symmatl()

New in Armadillo 2.0.0 (Jun 29, 2011)

  • faster multiplication of tiny matrices (≤ 4x4)
  • faster compound expressions containing submatrices
  • faster inverse of symmetric positive definite matrices
  • faster element access for fixed size matrices
  • added handling of arbitrarily sized empty matrices (eg. 5x0)
  • added loading & saving of matrices as CSV text files
  • added .count() member function to running_stat and running_stat_vec
  • added syl(), strans(), symmatu()/symmatl()
  • added submatrices of submatrices
  • det(), inv() and solve() can be forced to use more precise algorithms for tiny matrices (≤ 4x4)
  • htrans() has been deprecated; use trans() instead
  • API change: trans() now takes the complex conjugate when transposing a complex matrix
  • API change: .is_vec() now outputs true for empty vectors (eg. 0x1)
  • API change: forms of chol(), eig_sym(), eig_gen(), inv(), lu(), pinv(), princomp(), qr(), solve(), svd(), syl() that do not return a bool indicating success now throw std::runtime_error exceptions when failures are detected
  • API change: princomp_cov() has been removed; princomp() in conjunction with cov() can be used instead
  • API change: set_log_stream() & get_log_stream() have been replaced by set_stream_err1() & get_stream_err1()

New in Armadillo 1.99.5 (Jun 23, 2011)

  • Forms of chol(), eig_sym(), eig_gen(), inv(), lu(), pinv(), princomp(), qr(), solve(), svd(), syl() that do not return a bool indicating success now throw std::runtime_error exceptions when failures are detected
  • princomp_cov() has been removed; princomp() in conjunction with cov() can be used instead
  • set_log_stream() & get_log_stream() have been replaced by set_stream_err1() & get_stream_err1()
  • det(), inv() and solve() can be forced to use more precise algorithms for tiny matrices (≤ 4x4)
  • Added loading & saving of matrices as CSV text files

New in Armadillo 1.99.4 (Jun 6, 2011)

  • fixes for handling of tiny matrices

New in Armadillo 1.2.0 (Apr 18, 2011)

  • Added ability to use Blas & Lapack libraries with capitalised function names
  • Reduction of pedantic compiler warnings

New in Armadillo 1.1.92 (Mar 31, 2011)

  • Bugfix in cor()
  • Automatic installation now requires CMake >= 2.6

New in Armadillo 1.1.90 (Mar 23, 2011)

  • Added .min() & .max(), which can provide the extremum's location
  • More robust mean(), var(), stddev()

New in Armadillo 1.1.8 (Mar 10, 2011)

  • Added floor() and ceil()
  • Added “not a number”: math::nan()
  • Added infinity: math::inf()
  • Added standalone is_finite()
  • Faster min(), max(), mean()
  • Bugfix for a corner case with NaNs in min() and max()

New in Armadillo 1.1.6 (Mar 2, 2011)

  • fixed size matrices and vectors can use auxiliary (external) memory
  • .in_range() can use span() arguments
  • subfields can use span() arguments

New in Armadillo 1.1.4 (Feb 19, 2011)

  • Faster sort()
  • Updated installation to detect recent versions of Intel's MKL
  • Added interpretation of arbitrary "flat" subcubes as matrices

New in Armadillo 1.1.2 (Feb 2, 2011)

  • Faster prod()
  • Faster solve() for compound expressions
  • Fix for compilation with GCC using the -std=c++0x mode
  • Fix for matrix handling by subcubes

New in Armadillo 1.0.0 (Nov 23, 2010)

  • After 2½ years of collaborative development, we are proud to release the 1.0 milestone version.
  • Many thanks are extended to all contributors and bug reporters.

New in Armadillo 0.9.90 (Oct 14, 2010)

  • Added unsafe_col()
  • Speedups and bugfixes in lu()
  • Minimization of pedantic compiler warnings

New in Armadillo 0.9.80 (Sep 21, 2010)

  • Added join_slices(), insert_slices(), shed_slices()
  • Added in-place operations on diagonals
  • Various speedups due to internal architecture improvements

New in Armadillo 0.9.70 (Sep 1, 2010)

  • Added template based size specification
  • Added insertion of rows & columns
  • Added deletion of rows & columns
  • Added set_imag() & set_real()
  • Added in_range()
  • Added is_empty()
  • Various speedups, mainly in expressions involving submatrices
  • Fixes for a few corner cases

New in Armadillo 0.9.52 (Jul 14, 2010)

  • Bugfixes for saving complex cubes
  • Workarounds to remove warnings under certain dodgy compilers

New in Armadillo 0.9.50 (Jul 7, 2010)

  • Faster compilation by omitting Boost where possible
  • Faster insertion into submatrices
  • More accurate linspace()
  • Deprecated rand() in favour of randu()
  • Modified load() & save() to print warnings
  • Added quiet_load() & quiet_save()
  • Added conversions to/from std::vector
  • Added convolution operation: conv()
  • Added toeplitz()
  • Added detection of MKL & ACML during installation
  • Added MSVC project files for compiling examples

New in Armadillo 0.9.10 (Jun 2, 2010)

  • Speedups for find() and relational operators
  • Speedups for expressions involving mixed matrix types
  • More consistent success indication by decomposition functions

New in Armadillo 0.9.8 (May 14, 2010)

  • Added handling of interactions between complex scalars and non-complex matrices
  • Minor bugfixes for compilation issues under certain compilers

New in Armadillo 0.9.4 (Mar 16, 2010)

  • Added cross()
  • Bugfixes for inplace addition of particular vector multiplication expressions

New in Armadillo 0.9.2 (Mar 2, 2010)

  • Minor speedups
  • Added princomp_cov()
  • Bugfixes in complex-number versions of several functions

New in Armadillo 0.6.12 (Jun 25, 2009)

  • Added raw_print() and a collection of physical constants
  • Code cleanup for better conformance to the C++ standard
  • Workaround for NVIDIA's CUDA compiler
  • Miscellaneous documentation and installation improvements

New in Armadillo 0.6.11 (May 20, 2009)

  • more elaborate Mat class destructor for better debugging of user code
  • bugfix for solve() when using complex numbers
  • bugfix for documentation of sort() and sort_index()
  • modified installation to check for version of Boost libraries
  • cleaned up rpm spec file

New in Armadillo 0.6.8 (Apr 25, 2009)

  • Better installation on Mac OS X.

New in Armadillo 0.6.6 (Apr 9, 2009)

  • fields of strings can now loaded & saved as plain text files
  • better handling of 64 bit systems, especially when using CMake 2.6
  • bug fix for template detection of combined multiply and addition operations

New in Armadillo 0.6.4 (Apr 3, 2009)

  • Added 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.

New in Armadillo 0.6.2 (Mar 26, 2009)

  • Fixes for interaction between matrices with different element types.

New in Armadillo 0.6.1 (Mar 25, 2009)

  • Fixes for interaction between matrices with different element types.

New in Armadillo 0.6.0 (Mar 24, 2009)

  • 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

New in Armadillo 0.5.2 (Mar 11, 2009)

  • Added functionality:
  • subfields
  • sort_index()
  • Bug fixes:
  • pow() applied to integer matrices (gcc < 4.3)
  • multiplication of submats with a scalar
  • division involving scalars

New in Armadillo 0.5.0 (Mar 10, 2009)

  • 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

New in Armadillo 0.4.0 (Jan 29, 2009)

  • easier configuration and installation
  • statistics functions: mean, median, var, sd
  • more functions for handling complex numbers: conj, cx_abs, htrans
  • other functions: sort, dot, norm_dot, norm

New in Armadillo 0.3.0 (Jan 16, 2009)

  • handling of complex numbers as well as other types
  • added trigonometric functions