What's new in Armadillo 12.8.2
Apr 7, 2024
- Changes since 12.8.1:
- Workaround for FFTW3 header clash
- Workaround in testing framework for issue under macOS
- Minor cleanups to reduce code bloat
- Improved documentation
New in Armadillo 12.8.1 (Mar 3, 2024)
- Workaround in norm() for yet another bug in macOS accelerate framework
New in Armadillo 12.8.0 (Feb 8, 2024)
- Changes since 12.6:
- Faster detection of symmetric expressions by pinv() and rank()
- Expanded shift() to handle sparse matrices
- Expanded conv_to for more flexible conversions between sparse and dense matrices
- Added cbrt()
- More compact representation of integers when saving matrices in CSV format
New in Armadillo 12.6.7 (Dec 26, 2023)
- Fix for saving sparse matrices as CSV files
New in Armadillo 12.6.6 (Oct 31, 2023)
- Fix eigs_sym(), eigs_gen() and svds() to generate deterministic results in ARPACK mode
New in Armadillo 12.6.5 (Oct 16, 2023)
- Fix for corner-case bug in handling sparse matrices with no non-zero elements
- Various fixes in the documentation
New in Armadillo 12.6.4 (Sep 7, 2023)
- Changes:
- Workarounds for bugs in Apple accelerate framework
- Fix incorrect calculation of rcond for band matrices in solve()
- Remove expensive and seldom used optimisations, leading to faster compilation times
New in Armadillo 12.6.3 (Aug 29, 2023)
- Changes:
- Fix for corner-case in loading CSV files with headers
- For consistent file handling, all .load() functions now open text files in binary mode; to revert to previous behaviour, define ARMA_DONT_TREAT_TEXT_AS_BINARY before including the Armadillo header
New in Armadillo 12.6.2 (Aug 12, 2023)
- Changes:
- Use thread-safe Mersenne Twister as the default RNG on all platforms
- Use unique RNG seed for each thread within multi-threaded execution (such as OpenMP)
- Explicitly document arma_rng::set_seed() and arma_rng::set_seed_random()
New in Armadillo 12.6.1 (Jul 27, 2023)
- Changes:
- Fix regression in multiplication of dense vectors by sparse matrices
- Fix speed regression in handling of complex sparse matrices by eigs_gen()
New in Armadillo 12.6.0 (Jul 24, 2023)
- Faster multiplication of dense vectors by sparse matrices (and vice versa)
- Faster eigs_sym() and eigs_gen()
- Faster conv() and conv2() when using OpenMP
- More efficient move constructors in dense vector classes
- Added diags() and spdiags() for generating band matrices from set of vectors
New in Armadillo 12.4.1 (Jun 18, 2023)
- Changes:
- Fix bug in SpMat::shed_cols()
- Functions such as .is_finite() and find_nonfinite() will now emit a runtime warning when compiled in fast math mode (gcc and clang: -ffast-math or -Ofast); such compilation mode disables detection of non-finite values
New in Armadillo 12.4.0 (May 25, 2023)
- Improvements since 12.2:
- Added norm2est() for finding fast estimates of matrix 2-norm (spectral norm)
- Added vecnorm() for obtaining the vector norm of each row or column of a matrix
New in Armadillo 12.2.0 (Apr 4, 2023)
- Improvements since 12.0:
- more efficient use of FFTW3 by fft() and ifft()
- faster in-place element-wise multiplication of sparse matrices by dense matrices
- added spsolve_factoriser class to allow reuse of sparse matrix factorisation for solving systems of linear equations
New in Armadillo 12.0.1 (Feb 24, 2023)
- fix regression (mis-compilation) in shift() function
New in Armadillo 12.0.1 (Feb 24, 2023)
- fix regression (mis-compilation) in shift() function
New in Armadillo 12.0.0 (Feb 21, 2023)
- faster fft() and ifft() via optional use of FFTW3
- faster min() and max()
- faster index_min() and index_max()
- added .col_as_mat() and .row_as_mat() which return matrix representation of cube column and cube row
- added csv_optsstrict option to loading CSV files to interpret missing values as NaN
- added check_for_zeros option to form 4 of sparse matrix batch constructors
- inv() and inv_sympd() with options inv_optsno_ugly or inv_optsallow_approx now use a scaled threshold similar to pinv()
- set_cout_stream() and set_cerr_stream() are now no-ops; instead use the options ARMA_WARN_LEVEL, or ARMA_COUT_STREAM, or ARMA_CERR_STREAM
New in Armadillo 11.4.4 (Feb 9, 2023)
- Changes:
- fix corner-case handling of NaN by interp1()
- deprecated old functions .quiet_save() and .quiet_load()
New in Armadillo 11.4.3 (Dec 28, 2022)
- Changes:
- Fix corner case in pinv() when processing symmetric matrices
- Improved documentation
New in Armadillo 11.4.2 (Oct 21, 2022)
- More robust handling of corner cases in multi-threaded contexts
- Improved documentation
New in Armadillo 11.4.1 (Oct 11, 2022)
- Fix data race in Cube::slice()
- Workarounds for false warnings emitted by GCC 12 when compiling with FORTIFY_SOURCE enabled
New in Armadillo 11.4.0 (Sep 22, 2022)
- Faster handling of compound expressions by sum()
- Extended pow() with various forms of element-wise power operations
- Added find_nan() to find indices of NaN elements
New in Armadillo 11.2.4 (Sep 9, 2022)
- Fix handling of std::move() involving matrices constructed with auxiliary memory
New in Armadillo 11.2.3 (Jul 12, 2022)
- fix configuration and linking with the HDF5 library
- fix Cube::insert_slices() to accept Cube::slice() as input
New in Armadillo 11.2.2 (Jul 4, 2022)
- Fix incorrect and/or slow convergence in single-threaded versions of kmeans(), gmm_diag::learn(), gmm_full::learn()
New in Armadillo 11.2.0 (Jun 11, 2022)
- Changes since 11.1:
- Faster handling of sparse submatrix column views by norm(), accu(), nonzeros()
- Extended randu() and randn() to allow specification of distribution parameters
- Internal refactoring, leading to faster compilation times
New in Armadillo 11.1.1 (May 15, 2022)
- Changes:
- Added inv_opts::no_ugly option to inv() and inv_sympd() to disallow inverses of poorly conditioned matrices
- More efficient handling of rank-deficient matrices via inv_opts::allow_approx option in inv() and inv_sympd()
- Better detection of rank deficient matrices by solve()
- Faster handling of symmetric and diagonal matrices by cond()
- Fixes for aliasing corner cases in solve()
New in Armadillo 11.1.0 (May 13, 2022)
- Fix miscompilation of inv() and inv_sympd() functions when using inv_opts::allow_approx and inv_opts::tiny options
New in Armadillo 11.0.1 (Apr 14, 2022)
- Fix miscompilation of inv() and inv_sympd() functions when using inv_opts::allow_approx and inv_opts::tiny options
New in Armadillo 11.0.0 (Apr 5, 2022)
- Added variants of inv() and inv_sympd() that provide rcond (reciprocal condition number)
- Expanded inv() and inv_sympd() with options inv_opts::tiny and inv_opts::allow_approx
- Stricter handling of singular matrices by inv() and inv_sympd()
- Stricter handling of non-sympd matrices by inv_sympd()
- Stricter handling of non-finite matrices by pinv()
- More robust handling of rank deficient matrices by solve()
- Faster handling of diagonal matrices by rcond()
- Changed eigs_sym() and eigs_gen() to use higher quality RNG
- Quantile() and median() will now throw an exception if given matrices/vectors have NaN elements
- Workaround for yet another bug in Intel MKL
New in Armadillo 11.0 RC 2 (Mar 28, 2022)
- More robust handling of rank deficient matrices by solve()
- Added variants of inv() and inv_sympd() that provide rcond (reciprocal condition number)
- Stricter handling of sympd matrices by inv_sympd()
- Faster handling of diagonal matrices by rcond()
- Changed eigs_sym() and eigs_gen() to use higher quality RNG
- Workaround for yet another bug in Intel MKL
New in Armadillo 10.8.2 (Feb 2, 2022)
- Fix potential speed regression in pinv() and rank()
New in Armadillo 10.8.1 (Jan 31, 2022)
- Fix interaction between OpenBLAS and LAPACK
- Emit warning if find() is incorrectly used to locate NaN elements
New in Armadillo 10.8.0 (Jan 3, 2022)
- Changes since 10.7:
- Faster handling of symmetric matrices by pinv() and rank()
- Faster handling of diagonal matrices by inv_sympd(), pinv(), rank()
- Expanded norm() to handle integer vectors and matrices
- Added datum::tau to replace 2p
- Improvements to the documentation
New in Armadillo 10.7.5 / 10.8 RC2 (Dec 28, 2021)
- Improved detection of symmetric/hermitian matrices by pinv() and rank()
- Fixes for potential misdetection of symmetric matrices by several functions
New in Armadillo 10.7.5 (Dec 18, 2021)
- Changes:
- Fix aliasing bug in diagmat()
- Fix detection of 2x2 triangular matrices
New in Armadillo 10.7.4 (Nov 23, 2021)
- Faster handling of diagonal matrices by inv_sympd(), pinv(), rank()
- More robust detection of incorrect data format by .load()
- Added OPENBLAS_PROVIDES_LAPACK option to the CMake-based installer, to allow assuming that OpenBLAS provides LAPACK functions
New in Armadillo 10.7.3 (Nov 4, 2021)
- Fix regression in alias handling by fliplr(), flipud(), reverse()
- More robust handling of diagonal matrices by pinv()
New in Armadillo 10.7.2 (Nov 2, 2021)
- More robust handling of diagonal matrices by pinv()
New in Armadillo 10.7.1 (Oct 8, 2021)
- Fix regression in interactions between dense matrix subviews and sparse matrices
- Improved documentation
New in Armadillo 10.6.2 (Aug 5, 2021)
- Fix incorrect use of constexpr for handling fixed-size matrices and vectors.
- Improved documentation.
New in Armadillo 10.6.0 (Jul 18, 2021)
- Armadillo 10.6 has feature enhancements and speedups.
New in Armadillo 10.5.1 (May 30, 2021)
- Changes:
- more robust handling of low memory situations by .load()
- workaround for RNG issue when using GCC on macOS
New in Armadillo 10.5.0 (May 22, 2021)
- Changes since 10.4:
- added .clamp() member function
- expanded the standalone clamp() function to handle complex values
- more efficient use of OpenMP
- vector, matrix and cube constructors now initialise elements to zero by default; use the fill::none specifier, eg. mat X(4,5,fill::none), to disable element initialisation
- the CMake based installer now detects FlexiBLAS by default under Linux
New in Armadillo 10.4.1 (Apr 23, 2021)
- Changes:
- Fix superfluous compiler warning in det()
- Fix prototypes for SuperLU xGSTRF functions, affecting the shift-invert mode in eigs_sym() and eigs_gen()
- Fix incorrect use of random numbers within the R environment, affecting RcppArmadillo
- Minor improvements to the documentation
New in Armadillo 10.4.0 (Apr 5, 2021)
- Faster handling of triangular matrices by log_det()
- Added log_det_sympd() for log determinant of symmetric positive matrices
- Added ARMA_WARN_LEVEL configuration option, to control the degree of emitted warning messages
- Reduced the default degree of warning messages, so that failed decompositions, failed saving/loading, etc, no longer emit warnings
New in Armadillo 10.3.2 (Apr 5, 2021)
- Faster handling of symmetric positive definite matrices by pinv()
- Expanded .save() / .load() for dense matrices to handle coord_ascii format
- For out of bounds access, element accessors now throw the more nuanced std::out_of_range exception, instead of only std::logic_error
- Improved quality of random numbers
New in Armadillo 10.2.2 (Feb 26, 2021)
- Workaround for macOS 11 / AppleClang 12.0 bug with thread_local
- Fix division-by-zero corner case in pinv()
- Fix handling of compound expressions by rcond()
- Minor layout improvements in .brief_print()
New in Armadillo 9.900.1 (Jun 8, 2020)
- Faster solve() for under/over-determined systems
- Faster eig_gen() and eig_pair() for large matrices
- Expanded eig_gen() and eig_pair() to optionally provide left and right eigenvectors
New in Armadillo 9.900 RC1 (Jun 5, 2020)
- Faster solve() for under/over-determined systems
- Faster eig_gen() and eig_pair() for large matrices
- Expanded eig_gen() and eig_pair() to optionally provide left and right eigenvectors
New in Armadillo 9.870 RC 1 (Apr 22, 2020)
- faster handling of matrix multiplication expressions by diagvec() and diagmat()
- added trimatu_ind() and trimatl_ind()
- more consistent detection of sparse vector expressions
New in Armadillo 9.800.1 (Oct 8, 2019)
- Faster solve() in default operation; iterative refinement is no longer applied by default; use solve_opts::refine to explicitly enable refinement
- Faster expmat()
- Faster handling of triangular matrices by rcond()
- Added .front() and .back()
- Added .is_trimatu() and .is_trimatl()
- Added .is_diagmat()
New in Armadillo 9.700.2 (Sep 2, 2019)
- Faster handling of cubes by vectorise()
- Faster handling of sparse matrices by nonzeros()
- Faster row-wise index_min() and index_max()
- Expanded join_rows() and join_cols() to handle joining up to 4 matrices
- Expanded .save() and .load() to allow storing sparse matrices in CSV format
- Added randperm() to generate a vector with random permutation of a sequence of integers
- Miscellaneous performance improvements
New in Armadillo 9.700 RC1 (Aug 27, 2019)
- Faster handling of cubes by vectorise()
- Faster row-wise index_min() and index_max()
- Expanded join_rows() and join_cols() to handle joining up to 4 matrices
- Expanded .save() and .load() to allow storing sparse matrices in CSV format
- Added randperm() to generate a vector with random permutation of a sequence of integers
New in Armadillo 9.400.2 (Apr 28, 2019)
- Faster cov() and cor()
- Added .as_col() and .as_row()
- Expanded .shed_rows() / .shed_cols() / .shed_slices() to remove rows/columns/slices specified in a vector
- Expanded vectorise() to handle sparse matrices
- Expanded elementwise versions of max() and min() to handle sparse matrices
- Optimised handling of sparse matrix expressions: sparse % (sparse + scalar) and sparse / (sparse + scalar)
- Expanded eig_sym(), chol(), expmat_sym(), logmat_sympd(), sqrtmat_sympd(), inv_sympd() to print a warning if the given matrix is not symmetric
- More consistent detection of vector expressions
New in Armadillo 9.400 RC1 (Apr 18, 2019)
- RC1 contains new features, enhancements and speedups.
New in Armadillo 9.300.2 (Mar 22, 2019)
- faster handling of compound complex matrix expressions by trace()
- more efficient handling of element access for inplace modifications in sparse matrices
- added .is_sympd() to check whether a matrix is symmetric/hermitian positive definite
- added interp2() for 2D data interpolation
- added expm1() and log1p()
- expanded .is_sorted() with options "strictascend" and "strictdescend"
- expanded eig_gen() to optionally perform balancing prior to decomposition... read more
New in Armadillo 9.200.5 (Dec 10, 2018)
- Fix for linking issue when using fixed size matrices and vectors
- Faster handling of common cases by princomp()
- Documentation improvements
New in Armadillo 9.200.4 (Nov 6, 2018)
- new features, enhancements and speedups.
New in Armadillo 9.200 RC3 (Oct 30, 2018)
- Faster handling of symmetric positive definite matrices by rcond()
- Faster transpose of matrices with size = 512x512
- Faster handling of compound sparse matrix expressions by accu(), diagmat(), trace()
- Added sinc()
- Expanded sign() to handle scalar arguments
- Expanded operators (*, %, +, -) to handle sparse matrices with differing element types (eg. multiplication of complex matrix by real matrix)
- Expanded conv_to() to allow conversion between sparse matrices with differing element types
- Expanded solve() to optionally allow keeping solutions of systems singular to working precision
New in Armadillo 9.200 RC1 (Sep 24, 2018)
- Faster handling of symmetric positive definite matrices by rcond()
- Faster handling of compound sparse matrix expressions by accu()
- Added sinc()
- Expanded solve() to optionally allow keeping solutions of systems singular to working precision
New in Armadillo 9.100.5 (Aug 16, 2018)
- contains new features, enhancements and speedups.
New in Armadillo 9.100 RC1 (Aug 10, 2018)
- Faster handling of symmetric/hermitian positive definite matrices by solve()
- Faster handling of inv_sympd() in compound expressions
- Added .is_symmetric()
- Added .is_hermitian()
- Expanded spsolve() to optionally allow keeping solutions of systems singular to working precision
- New configuration options ARMA_OPTIMISE_SOLVE_BAND and ARMA_OPTIMISE_SOLVE_SYMPD
New in Armadillo 8.600.0 (Jun 29, 2018)
- Added hess() for Hessenberg decomposition
- Added .row(), .rows(), .col(), .cols() to subcube views
- Expanded .shed_rows() and .shed_cols() to handle cubes
- Expanded .insert_rows() and .insert_cols() to handle cubes
- Expanded subcube views to allow non-contiguous access to slices
- Improved tuning of sparse matrix element access operators
- Faster handling of tridiagonal matrices by solve()
- Faster multiplication of matrices with differing element types when using OpenMP
- Fix for solve() to handle systems with irregularly structured band matrices
- Moved source code repo from GitHub to GitLab
New in Armadillo 8.600.0 RC (Jun 12, 2018)
- Added hess() for Hessenberg decomposition
- Added .row(), .rows(), .col(), .cols() to subcube views
- Expanded .shed_rows() and .shed_cols() to handle cubes
- Expanded .insert_rows() and .insert_cols() to handle cubes
- Faster handling of tridiagonal matrices by solve()
- Faster multiplication of matrices with differing element types when using OpenMP
New in Armadillo 8.500 (Apr 21, 2018)
- Faster handling of sparse matrices by kron() and repmat()
- Faster transpose of sparse matrices
- Faster sparse * dense matrix multiplication
- Faster handling of sparse matrices by trace()
- Faster element access in sparse matrices
- Faster row iterators for sparse matrices
- Faster handling of compound expressions by trace()
- Added repelem() for replicating elements
- Expanded normalise() to handle sparse matrices
- Expanded .transform() and .for_each() to handle sparse matrices
- Added reverse() for reversing order of elements
- Added roots() for finding the roots of a polynomial
New in Armadillo 8.500 RC1 (Mar 26, 2018)
- faster element access in sparse matrices
- faster row iterators for sparse matrices
- faster handling of compound expressions by trace()
- expanded normalise() to handle sparse matrices
- expanded .transform() and .for_each() to handle sparse matrices
- added reverse() for reversing order of elements
- added roots() for finding the roots of a polynomial
New in Armadillo 8.400 (Feb 19, 2018)
- Faster handling of sparse matrices by repmat()
- Faster loading of CSV files
- Expanded kron() to handle sparse matrices
- Expanded index_min() and index_max() to handle cubes
- Expanded randi(), randu(), randn(), randg() to output single scalars
- Added submatrix & subcube iterators
- Added normcdf()
- Added mvnrnd()
- Added chi2rnd() for generation of chi-squared random numbers
- Added wishrnd() and iwishrnd() for generation of random Wishart matrices
New in Armadillo 8.400 RC1 (Feb 9, 2018)
- Faster handling of sparse matrices by repmat()
- Faster loading of CSV files
- Expanded kron() to handle sparse matrices
- Expanded index_min() and index_max() to handle cubes
- Expanded randi(), randu(), randn(), randg() to output single scalars
- Added submatrix & subcube iterators
- Added normcdf()
- Added chi2rnd() for generation of chi-squared random numbers
- Added wishrnd() and iwishrnd() for generation of random Wishart matrices
New in Armadillo 8.300.1 (Dec 4, 2017)
- Fixes for reading elements in sparse matrices using multiple threads
- Fixes for accessing subfields of 3D fields
New in Armadillo 8.200.2 (Nov 13, 2017)
- Version 8.200.2 is a maintenance release, containing workarounds for older compilers and several fixes for OpenMP related issues. Users are encouraged to update.
New in Armadillo 8.200.1 (Oct 30, 2017)
- Added intersect() for finding common elements in two vectors/matrices
- Expanded affmul() to handle non-square matrices
- Faster handling of aliasing in element-wise max() and min()
New in Armadillo 7.500.0 (Oct 19, 2016)
- 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.
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 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 (Mar 1, 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.4 (Jan 27, 2016)
- added conv2() for 2D convolution
- added stand-alone kmeans() function for clustering data
- added trunc()
- extended conv() to optionally provide central convolution
- faster handling of multiply-and-accumulate by accu() when using Intel MKL, ATLAS or OpenBLAS
New in Armadillo 6.500.2 Test (Jan 20, 2016)
- 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.200.4 (Dec 16, 2015)
- expanded each_col(), each_row() and each_slice() to handle C++11 lambda functions
- added ind2sub() and sub2ind()
- fixes for corner cases in the gmm_diag class
New in Armadillo 6.300.0 Test (Dec 2, 2015)
- 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
New in Armadillo 6.200.4 (Nov 21, 2015)
- contains bug fixes for sparse eigen decomposition.
New in Armadillo 6.200.1 (Nov 21, 2015)
- Version 6.200 contains feature enhancements and minor bug fixes.
- Available from http://arma.sourceforge.net/download.html
- 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.1 (Nov 21, 2015)
- 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
New in Armadillo 5.400.2 (Aug 17, 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 flupud()
- faster row-wise cumsum()
- fix for k-means clustering in gmm_diag class
New in Armadillo 5.300.0 (Aug 10, 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.2 (Jun 25, 2015)
- bugfix in interp1()
- 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.1 (May 26, 2015)
- 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.1 (May 1, 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 19, 2015)
- 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.600.0 (Dec 29, 2014)
- 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 GCC 4.4
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.2 (Sep 9, 2014)
- disabled automatic detection of HDF5 to prevent compilation problems
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
- MLPACK 1.0.9 released; MLPACK is a library for machine learning and pattern recognition, built on top of Armadillo
- Armadillo is used extensively in a self-driving car project at University of Ulm
New in Armadillo 4.320.0 (Jul 2, 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
- Scyllarus is a toolbox for processing hyper-spectral data, using Armadillo as the math library
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
- Scyllarus is a toolbox for processing hyper-spectral data, using Armadillo as the math library
New in Armadillo 4.300.2 (May 15, 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.249 Alpha 2 (May 1, 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.1 Alpha (Mar 25, 2014)
- faster transpose of sparse matrices
- more efficient handling of aliasing during matrix multiplication
- faster inverse of matrices marked as diagonal
- Ceemple is a JIT based environment for rapid prototyping and technical computing, using Armadillo as the math library
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 (Mar 3, 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.000.4 (Mar 3, 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 saving field objects
New in Armadillo 4.000.1 (Jan 16, 2014)
- fix for randi() generating out-of-interval values
- workaround for a bug in the Intel compiler
New in Armadillo 4.000.0 (Jan 6, 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.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.929 Beta 1 (Dec 5, 2013)
- added size() based specifications of submatrix view sizes
- added element-wise variants of min() and max()
- added divide-and-conquer variant of svd_econ(), for faster SVD
- added divide-and-conquer variant of pinv(), for faster pseudo-inverse
- 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()
New in Armadillo 3.920.3 (Nov 29, 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 (Oct 14, 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)
- MLPACK is a machine learning and pattern recognition library, built on top of Armadillo
New in Armadillo 3.910.0 (Aug 15, 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 (Jul 31, 2013)
- minor fix for inplace reshape()
- 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 vectorization of elementary expressions (eg. matrix addition) when using GCC 4.7+ with -O3 optimization
- added support for saving & loading of cubes in HDF5 format
- faster median()
- 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.810.2 (Apr 27, 2013)
- minor fix for initialization of sparse matrices
- 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.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 warnings
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
- faster singular value decomposition via divide-and-conquer algorithm
- faster .randn()
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 (Jul 2, 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.1.94 (May 15, 2012)
- added unique(), for finding unique elements of a matrix
- faster eigen decomposition via "divide and conquer" algorithm
- faster transpose of vectors and compound expressions
- faster handling of tiny fixed size vectors (? 4 elements)
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 13, 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 7, 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 6, 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 12, 2011)
- added .resize()
- fix for vector initialisation
New in Armadillo 2.4.0 (Dec 6, 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 29, 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 29, 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 23, 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.0.2 (Aug 23, 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 (Aug 23, 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; eig_sym() 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.2.0 (Apr 22, 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 22, 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 (Mar 2, 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.1.0 (Dec 26, 2010)
- Extended submatrix views, including access to elements whose indices are specified in a separate vector
- Added handling of raw binary files by save/load functions
- Added cumsum()
- Added interpretation of matrices as triangular via trimatu()/trimatl()
- Faster solve() and inv() via explicit handling of triangular matrices
- The stream for logging of errors and warnings can now be changed
New in Armadillo 1.0.0 (Dec 26, 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.92 (Nov 11, 2010)
- Fixes for compilation issues under the Intel C++ compiler
- Added matrix norms
New in Armadillo 0.9.90 (Oct 17, 2010)
- Added unsafe_col()
- Speedups and bugfixes in lu()
- Minimisation 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.60 (Aug 5, 2010)
- More flexible reshape(), allowing significantly different matrix sizes
- Added matrix initialisation via the
New in Armadillo 0.9.52 (Jul 18, 2010)
- Bugfixes for saving complex cubes
- Workarounds to remove warnings under certain dodgy compilers
New in Armadillo 0.9.50 (Jul 18, 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 3, 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.6 (Apr 28, 2010)
- Faster randn()
- Expanded norm() to handle max and min norms
- Added join_rows()/join_cols(), find() and STL-style iterators
New in Armadillo 0.7.0 (Oct 15, 2009)
- Main changes: 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()
New in Armadillo 0.6.12 (Jun 25, 2009)
- Main changes:
- Added raw_print() and a collection of physical constants
- Code cleanup for better conformance to the C++ standard
- Miscellaneous documentation and installation improvements
New in Armadillo 0.6.11 (Jun 25, 2009)
- Main changes: Bug fix for solve() when using complex numbers
- More elaborate class destructors for better debugging of user code
- Miscellaneous documentation and installation improvements
New in Armadillo 0.6.10 (Jun 25, 2009)
- Main changes: Added eigen decomposition of generic (non-symmetric) matrices
- Function eig() renamed to eig_sym()
New in Armadillo 0.6.8 (Jun 25, 2009)
- Main changes: Better installation on MacOS X
- Colour PPM images can now be loaded as fields of matrices
New in Armadillo 0.6.6 (Jun 25, 2009)
- Main changes: 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
New in Armadillo 0.6.2 (Jun 25, 2009)
- Fixes for interactions between matrices with different element types
New in Armadillo 0.6.0 (Jun 25, 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 (Jun 25, 2009)
- Added functionality: subfields
- sort_index()
- Bug fixes: pow() applied to integer matrices (gcc < 4.3)
- multiplication of submats with a scalar
- missing division operators
New in Armadillo 0.5.0 (Jun 25, 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 (Jun 25, 2009)
- Bug fixes and added functionality: easier configuration and installation
- statistics functions
- more functions for handling complex numbers
New in Armadillo 0.3.0 (Jun 25, 2009)
- Added functionality: handling of complex numbers as well as other types
- added trigonometric functions