Changes in version 15.2.7-1 (2026-05-29) o Upgraded to Armadillo release 15.2.7 (Medium Roast Deluxe) • More efficient checks for aliasing Changes in version 15.2.6-1 (2026-04-21) o Upgraded to Armadillo release 15.2.6 (Medium Roast Deluxe) • Ensure internally computed tolerances are not NaN o The rmultinom deploys 'Kahan summation' as R-devel does now. Changes in version 15.2.5-1 o Upgraded to Armadillo release 15.2.5 (Medium Roast Deluxe) • Fix for handling NaN elements in .is_zero() • Fix for handling NaN in tolerance and conformance checks • Faster handling of diagonal views and submatrices with one row o Sunset the C++11 fallback of including Armadillo 14.6.3 (#504 closing #503) o The vignettes have refreshed bibliographies, and are now built using the Rcpp::asis vignette builder (#506) o One rmultinom test is skipped under R-devel which has switched to a higher precisions calc Changes in version 15.2.4-1 (2026-03-17) o Upgraded to Armadillo release 15.2.4 (Medium Roast Deluxe) • Workarounds for bugs in GCC and Clang sanitisers (ASAN false positives) • Faster handling of blank sparse matrices o Refined OpenMP setup (Dirk in #500) Changes in version 15.2.3-1 (2025-12-17) o Upgraded to Armadillo release 15.2.3 (Medium Roast Deluxe) • Faster .resize() for vectors • Faster repcube() Changes in version 15.2.2-1 (2025-11-22) o Upgraded to Armadillo release 15.2.2 (Medium Roast Deluxe) • Improved reproducibility of random number generation when using OpenMP o Skip a unit test file under macOS as complex algebra seems to fail under newer macOS LAPACK setting o Further OpenMP detection rework for macOS (Dirk in #497, #499) o Define ARMA_CRIPPLED_LAPACK on Windows only if 'LEGACY' Armadillo selected Changes in version 15.2.1-0 o Upgraded to Armadillo release 15.2.1 (Medium Roast Deluxe) • Faster handling of submatrices with one row o Improve OpenMP detection (Dirk in #495 fixing #493) Changes in version 15.2.0-0 o Upgraded to Armadillo release 15.2.0 (Medium Roast Deluxe) • Added rande() for generating matrices with elements from exponential distributions • shift() has been deprecated in favour of circshift(), for consistency with Matlab/Octave • Reworked detection of aliasing, leading to more efficient compiled code o OpenMP detection in configure has been simplified Changes in version 15.0.2-2 (2025-09-19) o Minor update to skeleton Makevars,Makevars.win o Update README.md to mention ldlasb2 repository o Minor documentation update (#487) o Synchronized with Armadillo upstream (#488) o Refine Armadillo version selection in coordination with CRAN maintainers to support transition towards Armadillo 15.0.* Changes in version 15.0.2-1 (2025-09-08) o Upgraded to Armadillo release 15.0.2-1 (Medium Roast) • Optionally use OpenMP parallelisation for fp16 matrix multiplication • Faster vectorisation of cube tubes o Provide a top-level include file armadillo as fallback (#480) o Retire the no-longer-needed check for insufficient LAPACK as R now should supply a sufficient libRlapack (when used) (#483) o Two potential narrowing warnings are avoided via cast Changes in version 15.0.1-1 (2025-09-01) o Upgraded to Armadillo release 15.0.1-1 (Medium Roast) • Workaround for GCC compiler bug involving misoptimisation of complex number multiplication o This version contains both 'legacy' and 'current' version of Armadillo (see also below). Package authors should set a '#define' to select the 'current' version, or select the 'legacy' version (also chosen as default) if they must. See 'GitHub issue #475' for more details. o Updated DESCRIPTION and README.md Changes in version 15.0.0-1 o Upgraded to Armadillo release 15.0.0-1 (Medium Roast) • C++14 is now the minimum required C++ standard • Aded preliminary support for matrices with half-precision fp16 element type • Added second form of cond() to allow detection of failures • Added repcube() • Added .freeze() and .unfreeze() member functions to wall_clock • Extended conv() and conv2() to accept the "valid" shape argument o Also includes Armadillo 14.6.3 as fallback for C++11 compilations o This new 'dual' setup had been rigorously tested with five interim pre-releases of which several received full reverse-dependency checks Changes in version 14.6.3-1 (2025-08-20) o Upgraded to Armadillo release 14.6.3 (Caffe Mocha) • Fix OpenMP related crashes in Cube::slice() on Arm64 CPUs Changes in version 14.6.2-1 o Upgraded to Armadillo release 14.6.2 (Caffe Mocha) • Fix for corner-case speed regression in sum() • Better handling of OpenMP in omit_nan() and omit_nonfinite() Changes in version 14.6.1-1 o Upgraded to Armadillo release 14.6.1 (Caffe Mocha) • Fix for speed regression in mean() • Fix for detection of compiler configuration • Use of pow optimization now optional Changes in version 14.6.0-1 (2025-07-02) o Upgraded to Armadillo release 14.6.0 (Caffe Mocha) • Added balance() to transform matrices so that column and row norms are roughly the same • Added omit_nan() and omit_nonfinite() to extract elements while omitting NaN and non-finite values • Added find_nonnan() for finding indices of non-NaN elements • Added standalone replace() function o The fastLm() help page now mentions that options to solve() can control its behavior. Changes in version 14.4.3-1 (2025-05-21) o Upgraded to Armadillo release 14.4.3 (Filtered Espresso) • Fix for several corner cases involving handling of non-finite elements by sparse matrices Changes in version 14.4.2-1 (2025-04-25) o Upgraded to Armadillo release 14.4.2 (Filtered Espresso) • Fix for expmat() • Workaround for bugs in clang 20 compiler o Micro-cleanup in one test file Changes in version 14.4.1-1 (2025-03-28) o Upgraded to Armadillo release 14.4.1 (Filtered Espresso) • Fix for fft() and ifft() when using FFTW3 in multi-threaded contexts (such as OpenMP) Changes in version 14.4.0-1 (2025-03-18) o CRAN release having given a few packages time to catch-up to small upstream change as discussed and managed in #462 o Updated bibliography, and small edits to sparse matrix vignette o Switched continuous integration action to r-ci with implicit bootstrap Changes in version 14.4.0-0 o Upgraded to Armadillo release 14.4.0 (Filtered Espresso) • Faster handling of pow() and square() within accu() and sum() expressions • Faster sort() and sort_index() for complex matrices • Expanded the field class with .reshape() and .resize() member functions • More efficient handling of compound expressions by sum(), reshape(), trans() • Better detection of vector expressions by pow(), imag(), conj() o The package generator helper function now supports additional DESCRIPTIONs o This release revealed a need for very minor changes for a handful reverse-dependency packages which will be organized via GitHub issue tracking Changes in version 14.2.3-1 (2025-02-06) o Upgraded to Armadillo release 14.2.3 (Smooth Caffeine) • Minor fix for declaration of xSYCON and xHECON functions in LAPACK • Fix for rare corner-case in reshape() Changes in version 14.2.2-1 (2024-12-06) o Upgraded to Armadillo release 14.2.2 (Smooth Caffeine) • Workarounds for regressions in pre-release versions of GCC 15 • More selective detection of symmetric/hermitian matrices by various functions Changes in version 14.2.1-1 o Upgraded to Armadillo release 14.2.1 (Smooth Caffeine) • Fix for index_min() and index_max() to ensure that the first index of equal extremum values is found Changes in version 14.2.0-1 (2024-11-18) o Upgraded to Armadillo release 14.2.0 (Smooth Caffeine) • Faster handling of symmetric matrices by inv() and rcond() • Faster handling of hermitian matrices by inv(), rcond(), cond(), pinv(), rank() • Added solve_opts::force_sym option to solve() to force the use of the symmetric solver • More efficient handling of compound expressions by solve() o Added exporter specialisation for icube for the ARMA_64BIT_WORD case Changes in version 14.0.2-1 (2024-09-12) o Upgraded to Armadillo release 14.0.2 (Stochastic Parrot) • Optionally use C++20 memory alignment • Minor corrections for several corner-cases o The order of items displayed by citation() is reversed (Conrad in #449) o The DESCRIPTION file now uses an Authors@R field with ORCID IDs Changes in version 14.0.0-1 (2024-07-08) o Upgraded to Armadillo release 14.0.0 (Stochastic Parrot) • C++14 is now the minimum recommended C++ standard • Faster handling of compound expressions by as_scalar(), accu(), dot() • Faster interactions between sparse and dense matrices • Expanded stddev() to handle sparse matrices • Expanded relational operators to handle expressions between sparse matrices and scalars • Added .as_dense() to obtain dense vector/matrix representation of any sparse matrix expression • Updated physical constants to NIST 2022 CODATA values o New package version numbering scheme following upstream versions o Re-enabling ARMA_IGNORE_DEPRECATED_MARKE for silent CRAN builds Changes in version 0.12.8.4.0 (2024-05-31) o Upgraded to Armadillo release 12.8.4 (Cortisol Injector) • Faster handling of sparse submatrix views o Update versioned Depends on Rcpp to 1.0.8 or later to match use of Light/Lighter/Lightest headers. Changes in version 0.12.8.3.0 (2024-05-08) o Upgraded to Armadillo release 12.8.3 (Cortisol Injector) • Fix issue in fft() and fft2() in multi-threaded contexts with FFTW3 enabled o No longer set C++11 for the Rcpp plugin as this standard has been the default by R for very long time now. Changes in version 0.12.8.2.1 (2024-04-15) o One-char bug fix release commenting out one test that upsets reticulate when accessing a scipy sparse matrix Changes in version 0.12.8.2.0 (2024-04-05) o Upgraded to Armadillo release 12.8.2 (Cortisol Injector) • Workaround for FFTW3 header clash • Workaround in testing framework for issue under macOS • Minor cleanups to reduce code bloat • Improved documentation Changes in version 0.12.8.1.0 (2024-03-03) o Upgraded to Armadillo release 12.8.1 (Cortisol Injector) • Workaround in norm() for yet another bug in macOS accelerate framework o Update README for RcppArmadillo usage counts o Update examples to use '#include ' for faster compilation excluding unused Rcpp features Changes in version 0.12.8.0.0 (2024-02-08) o Upgraded to Armadillo release 12.8.0 (Cortisol Injector) • 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 o Five non-user facing top-level include files have been removed (#432 closing #400 and building on #395 and #396) Changes in version 0.12.6.7.0 o Upgraded to Armadillo release 12.6.7 (Cortisol Retox) • Fix for saving sparse matrices as CSV files o Added unit tests for thread throttling Changes in version 0.12.6.6.1 (2023-12-04) o Following the extendeded transition in #391 and #402, this release no longer sets ARMA_IGNORE_DEPRECATED_MARKER. Maintainers of affected packages have received pull requests or patches and can set -DARMA_IGNORE_DEPRECATED_MARKER as PKG_CPPFLAGS. Changes in version 0.12.6.6.0 (2023-11-01) o Upgraded to Armadillo release 12.6.6 (Cortisol Retox) • Fix eigs_sym(), eigs_gen() and svds() to generate deterministic results in ARPACK mode o Add helper functions to set and get the number of OpenMP threads o Store initial thread count at package load and use in thread-throttling helper (and resetter) suitable for CRAN constraints Changes in version 0.12.6.5.0 o Upgraded to Armadillo release 12.6.5 (Cortisol Retox) • Fix for corner-case bug in handling sparse matrices with no non-zero elements Changes in version 0.12.6.4.0 (2023-09-10) o Upgraded to Armadillo release 12.6.4 (Cortisol Retox) • 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 Changes in version 0.12.6.3.0 (2023-08-29) o Upgraded to Armadillo release 12.6.3 (Cortisol Retox) • Fix for corner-case in loading CSV files with headers • For consistent file handling, all .load() functions now open text files in binary mode Changes in version 0.12.6.2.0 o Upgraded to Armadillo release 12.6.2 (Cortisol Retox) • 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() o None of the changes above affect R use as RcppArmadillo connects the RNGs used by R to Armadillo Changes in version 0.12.6.1.0 (2023-08-10) o Upgraded to Armadillo release 12.6.1 (Cortisol Retox) • faster multiplication of dense vectors by sparse matrices (and vice versa) • faster eigs_sym() and eigs_gen() • faster conv() and conv2() when using OpenMP • added diags() and spdiags() for generating band matrices from set of vectors Changes in version 0.12.4.1.0 (2023-06-19) o Upgraded to Armadillo release 12.4.1 (Cortisol Profusion Redux) • 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; such compilation mode disables detection of non-finite values o Accommodate upcoming change in package Matrix (Mikael Jagan in #417 addressing #415) Changes in version 0.12.4.0.0 (2023-05-27) o Upgraded to Armadillo release 12.4.0 (Cortisol Profusion Redux) • 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 Changes in version 0.12.2.0.0 (2023-04-05) o Upgraded to Armadillo release 12.2.0 (Cortisol Profusion Deluxe) • 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 Changes in version 0.12.0.1.0 (2023-02-22) o Upgraded to Armadillo release 12.0.1 (Cortisol Profusion) • 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_opts::strict 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_opts::no_ugly or inv_opts::allow_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 • fix regression (mis-compilation) in shift() function (reported by us in #409) o The include directory order is now more robust (Kevin Ushey in #407 addressing #406) Changes in version 0.11.4.4.0 (2023-02-10) o Upgraded to Armadillo release 11.4.4 (Ship of Theseus) • extended pow() with various forms of element-wise power operations • added find_nan() to find indices of NaN elements • faster handling of compound expressions by sum() o The package no longer sets a compilation standard, or progagates on in the generated packages as R ensures C++11 on all non-ancient versions o The CITATION file was updated to the current format Changes in version 0.11.4.3.1 (2023-01-15) o The #define ARMA_IGNORE_DEPRECATED_MARKER remains active to suppress the (upstream) deprecation warnings, see #391 and #402 for details. Changes in version 0.11.4.3.0 o Upgraded to Armadillo release 11.4.3 (Ship of Theseus) • fix corner case in pinv() when processing symmetric matrices o Protect the undefine of NDEBUG behind additional opt-in define Changes in version 0.11.4.2.1 (2022-11-09) o Upgraded to Armadillo release 11.4.2 (Ship of Theseus) • more robust handling of corner cases in multi-threaded contexts o Internal header organisation with new sub-directories while providing full compatibility via existing paths (#395 #396) Changes in version 0.11.4.1.0 o Upgraded to Armadillo release 11.4.1 (Ship of Theseus) • fix data race in Cube::slice() • workarounds for false warnings emitted by GCC 12 when compiling with FORTIFY_SOURCE enabled (already in RcppArmadillo 0.11.4.0.1 too) Changes in version 0.11.4.0.1 (2022-10-02) o Upgraded to Armadillo release 11.4.0 (Ship of Theseus) • 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 o Also applied fixes to avoid g++-12 warnings affecting just a handful of CRAN packages. Changes in version 0.11.2.4.0 (2022-09-10) o Upgraded to Armadillo release 11.2.4 (Classic Roast) • fix handling of std::move() involving matrices constructed with auxiliary memory o In the fastLm() examples, use arma::dot() to compute to the inner product (as proposed by Conrad), plus small edits o Support optional #define named RCPPARMADILLO_FORCE_DEPRECATE to suppress use of ARMA_IGNORE_DEPRECATED_MARKER permitting use and development under deprecation Changes in version 0.11.2.3.1 (2022-08-18) o Accomodate upcoming Matrix 1.4-2 deprecation for conversion (Dirk in #387) o CRAN release with small upstream changes in Armadillo 11.2.(1,2,3) made since the last CRAN release 0.11.2.0.0 (Dirk in #383, #384 and #386) o Undefine arma_deprecated warning as it affects a number of CRAN packages which will likely need a small transition Changes in version 0.11.2.3.0 o Upgraded to Armadillo release 11.2.3 (Classic Roast) • fix Cube::insert_slices() to accept Cube::slice() as input Changes in version 0.11.2.2.0 o Upgraded to Armadillo release 11.2.2 (Classic Roast) • fix incorrect and/or slow convergence in single-threaded versions of kmeans(), gmm_diag::learn(), gmm_full::learn() Changes in version 0.11.2.1.0 o Upgraded to Armadillo release 11.2.1 (Classic Roast) • old style matrix initialisation via the << operator will now emit a compile-time deprecation warning • use of the old and inactive ARMA_DONT_PRINT_ERRORS option will now emit a compile-time deprecation warning • the option ARMA_WARN_LEVEL can be used instead Changes in version 0.11.2.0.0 (2022-06-15) o Upgraded to Armadillo release 11.2 (Classic Roast) • 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 Changes in version 0.11.1.1.0 (2022-05-15) o Upgraded to Armadillo release 11.1.1 (Angry Kitchen Appliance) • 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() o The configure script again propagates the'found' case again, thanks to Justin Silverman for the heads-up and suggested fix (Dirk and Justin in #376 and #377 fixing #375). Changes in version 0.11.0.1.0 o Upgraded to Armadillo release 11.0.1 (Creme Brulee) • fix miscompilation of inv() and inv_sympd() functions when using inv_opts::allow_approx and inv_opts::tiny options Changes in version 0.11.0.0.0 (2022-04-04) o Upgraded to Armadillo release 11.0.0 (Creme Brulee) • 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() and inv_sympd() • stricter handling of non-finitie 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 o Until May 2022, protect correction to Field behavior via define of RCPP_ARMADILLO_FIX_Field o If a LAPACK installation with missing complex routines is found (as e.g. Ubuntu using 3.9.0) then the LAPACK unit test is skipped. Changes in version 0.10.8.2.0 o Upgraded to Armadillo release 10.8.2 (Realm Raider) • fix potential speed regression in pinv() and rank() Changes in version 0.10.8.1.0 (2022-01-24) o Upgraded to Armadillo release 10.8.1 (Realm Raider) • fix interaction between OpenBLAS and LAPACK • emit warning if find() is incorrectly used to locate NaN elements Changes in version 0.10.8.0.0 o Upgraded to Armadillo release 10.8 (Realm Raider) • 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 2π Changes in version 0.10.7.5.0 (2021-12-17) o Upgraded to Armadillo release 10.7.5 • fix aliasing bug in diagmat() • fix detection of 2x2 triangular matrices Changes in version 0.10.7.4.0 o Upgraded to Armadillo release 10.7.4 • faster handling of diagonal matrices by inv_sympd(), pinv(), rank() • more robust detection of incorrect data format by .load() o Correct dimensions setting in import/export of arma::field types, protected by #define (Jonathan Berrisch in #352 fixing #351) o Add unit tests for fields both with and without new #define (Dirk) Changes in version 0.10.7.3.0 (2021-11-05) o Upgraded to Armadillo release 10.7.3 • fix regression in alias handling by fliplr(), flipud(), reverse() Changes in version 0.10.7.2.0 o Upgraded to Armadillo release 10.7.2 • more robust handling of diagonal matrices by pinv() Changes in version 0.10.7.1.0 o Upgraded to Armadillo release 10.7.1 • fix regression in interactions between dense matrix subviews and sparse matrices Changes in version 0.10.7.0.0 (2021-09-30) o Upgraded to Armadillo release 10.7.0 (Entropy Maximizer) • faster handling of submatrix views accessed by X.cols(first_col,last_col) • faster handling of element-wise min() and max() in compound expressions • expanded solve() with solve_opts::force_approx option to force use of the approximate solver Changes in version 0.10.6.2.0 o Upgraded to Armadillo release 10.6.2 (Keep Calm) • fix incorrect use of constexpr for handling fixed-size matrices and vectors • improved documentation o GitHub- and drat-only release Changes in version 0.10.6.0.0 (2021-07-16) o Upgraded to Armadillo release 10.6.0 (Keep Calm) • expanded chol() to optionally use pivoted decomposition • expanded vector, matrix and cube constructors to allow element initialisation via fill::value(scalar), eg. mat X(4,5,fill::value(123)) • faster loading of CSV files when using OpenMP • added csv_opts::semicolon option to allow saving/loading of CSV files with semicolon (;) instead of comma (,) as the separator Changes in version 0.10.5.3.0 o Upgraded to Armadillo release 10.5.3 (Antipodean Fortress) o GitHub-only release o Extended test coverage with several new tests, added a coverage badge. Changes in version 0.10.5.0 o Upgraded to Armadillo release 10.5 (Antipodean Fortress) • 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 o Added codecov.yml to exclude Armadillo from coverage analysis Changes in version 0.10.4.1.0 o Upgraded to Armadillo release 10.4.1 (Pressure Cooker) o GitHub-only release Changes in version 0.10.4.0.0 (2021-04-13) o Upgraded to Armadillo release 10.4.0 (Pressure Cooker) • 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 o Apply one upstream corrections for arma::randn draws when using alternative (here R) generator, and arma::randg. Changes in version 0.10.3.0.0 o Upgraded to Armadillo release 10.3 (Sunrise Chaos) • 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 Changes in version 0.10.2.2.0 (2021-03-09) o Upgraded to Armadillo release 10.2.2 (Cicada Swarm) • faster handling of subcubes • added tgamma() • added .brief_print() for abridged printing of matrices & cubes • expanded forms of trimatu() and trimatl() with diagonal specification to handle sparse matrices • expanded eigs_sym() and eigs_gen() with optional shift-invert mode o Removed debian/ directory from repository as packaging is on salsa.debian.org. o Relaxed tolerance on two cube tests on Windows to accomodate new 'gcc10-UCRT' builder. Changes in version 0.10.2.1.0 (2021-02-09) o Upgraded to Armadillo release 10.2.1 (Cicada Swarm) • faster handling of subcubes • added tgamma() • added .brief_print() for abridged printing of matrices & cubes • expanded forms of trimatu() and trimatl() with diagonal specification to handle sparse matrices • expanded eigs_sym() and eigs_gen() with optional shift-invert mode Changes in version 0.10.1.2.2 (2021-01-10) o Correct one unit test for Matrix 1.3.0-caused changed (Binxiang in #319 and Dirk in #322). o Suppress one further warning from Matrix (Dirk) o Apply an upstream NaN correction (Conrad in #321) o Added GitHub Actions CI using run.sh from r-ci (Dirk) Changes in version 0.10.1.2.0 (2020-11-16) o Upgraded to Armadillo release 10.1.2 (Orchid Ambush) o Remove three unused int constants (#313) o Include main armadillo header using quotes instead of brackets o Rewrite version number use in old-school mode because gcc 4.8.5 o Skipping parts of sparse conversion on Windows as win-builder fails Changes in version 0.10.1.0.0 (2020-10-20) o Upgraded to Armadillo release 10.1.0 (Orchid Ambush) • C++11 is now the minimum required C++ standard • faster handling of compound expressions by trimatu() and trimatl() • faster sparse matrix addition, subtraction and element-wise multiplication • expanded sparse submatrix views to handle the non-contiguous form of X.cols(vector_of_column_indices) • expanded eigs_sym() and eigs_gen() with optional fine-grained parameters (subspace dimension, number of iterations, eigenvalues closest to specified value) • deprecated form of reshape() removed from Cube and SpMat classes • ignore and warn on use of the ARMA_DONT_USE_CXX11 macro o Switch Travis CI testing to focal and BSPM Changes in version 0.9.900.3.0 (2020-09-03) o Upgraded to Armadillo release 9.900.3 (Nocturnal Misbehaviour) • More efficient code for initialising matrices with fill::zeros • Fixes for various error messages Changes in version 0.9.900.2.0 (2020-07-17) o Upgraded to Armadillo release 9.900.2 (Nocturnal Misbehaviour) • In sort(), fixes for inconsistencies between checks applied to matrix and vector expressions • In sort(), remove unnecessary copying when applied in-place to vectors function when applied in-place to vectors Changes in version 0.9.900.1.0 (2020-06-09) o Upgraded to Armadillo release 9.900.1 (Nocturnal Misbehaviour) • 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 o Switch Travis CI testing to R 4.0.0, use bionic as base distro and test R 3.6.3 and 4.0.0 in a matrix (Dirk in #298). o Add two badges to README for indirect use and the CSDA paper. o Adapt RcppArmadillo.package.skeleton() to a change in R 4.0.0 affecting what it exports in NAMESPACE. Changes in version 0.9.880.1.0 (2020-05-17) o Upgraded to Armadillo release 9.880.1 (Roasted Mocha Detox) • expanded qr() to optionally use pivoted decomposition • updated physical constants to NIST 2018 CODATA values • added ARMA_DONT_USE_CXX11_MUTEX confguration option to disable use of std::mutex o OpenMP capability is tested explicitly (Kevin Ushey and Dirk in #294, #295, and #296 all fixing #290). Changes in version 0.9.870.2.0 (2020-04-27) o Upgraded to Armadillo release 9.870.2 (Roasted Mocha Retox) • faster handling of matrix multiplication expressions by diagvec() and diagmat() • added trimatu_ind() and trimatl_ind() • more consistent detection of sparse vector expressions Changes in version 0.9.860.2.0 (2020-04-14) o Upgraded to Armadillo release 9.860.2 (Roasted Mocha Fix) • added powmat() • faster access to columns in sparse submatrix views • faster handling of relational expressions by accu() • faster handling of sympd matrices by expmat(), logmat(), sqrtmat() • workaround for save/load issues with HDF5 v1.12 o Vignettes are now pre-made and include (#285) o Two test files are now skipped on 32-bit Windows Changes in version 0.9.850.1.0 (2020-02-09) o Upgraded to Armadillo release 9.850.1 (Pyrocumulus Wrath) • faster handling of compound expressions by diagmat() • expanded .save() and .load() to handle CSV files with headers via csv_name(filename,header) specification • added log_normpdf() • added .is_zero() • added quantile() o The sparse matrix test using scipy, if available, is now simplified thanks to recently added reticulate conversions. Changes in version 0.9.800.4.0 (2020-01-24) o Upgraded to Armadillo release 9.800.4 (Horizon Scraper) • fixes for incorrect type promotion in normpdf() Changes in version 0.9.800.3.0 (2019-12-07) o Upgraded to Armadillo release 9.800.3 (Horizon Scraper) • fixes for matrix row iterators • better detection of non-hermitian matrices by eig_sym(), inv_sympd(), chol(), expmat_sym() o The sample function passes the prob vector as const allowing subsequent calls (Christian Gunning in #276 fixing #275) Changes in version 0.9.800.1.0 (2019-10-09) o Upgraded to Armadillo release 9.800 (Horizon Scraper) • 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() o The package now uses tinytest for unit tests (Dirk in #269). o The configure.ac script is now more careful about shell portability (Min Kim in #270). Changes in version 0.9.700.2.0 (2019-09-02) o Upgraded to Armadillo release 9.700.2 (Gangster Democracy) • faster handling of cubes by vectorise() • faster 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 o Expanded the list of known good gcc and clang versions in configure.ac Changes in version 0.9.600.4.0 (2019-07-15) o Upgraded to Armadillo release 9.600.4 (Napa Invasion) • faster handling of sparse submatrices • faster handling of sparse diagonal views • faster handling of sparse matrices by symmatu() and symmatl() • faster handling of sparse matrices by join_cols() • expanded clamp() to handle sparse matrices • added .clean() to replace elements below a threshold with zeros Changes in version 0.9.500.2.0 (2019-06-12) o Upgraded to Armadillo release 9.500.2 (Riot Compact) • Expanded solve() with solve_opts::likely_sympd to indicate that the given matrix is likely positive definite • more robust automatic detection of positive definite matrices by solve() and inv() • faster handling of sparse submatrices • expanded eigs_sym() to print a warning if the given matrix is not symmetric • extended LAPACK function prototypes to follow Fortran passing conventions for so-called "hidden arguments", in order to address GCC Bug 90329; to use previous LAPACK function prototypes without the "hidden arguments", #define ARMA_DONT_USE_FORTRAN_HIDDEN_ARGS before #include Changes in version 0.9.400.3.0 (2019-05-11) o Upgraded to Armadillo release 9.400.3 (Surrogate Miscreant) • check for symmetric / hermitian matrices (used by decomposition functions) has been made more robust • linspace() and logspace() now honour requests for generation of vectors with zero elements • fix for vectorisation / flattening of complex sparse matrices Changes in version 0.9.400.2.0 (2019-04-29) o Upgraded to Armadillo release 9.400.2 (Surrogate Miscreant) • 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 element-wise 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 Changes in version 0.9.300.2.0 (2019-03-22) o Upgraded to Armadillo release 9.300.2 (Fomo Spiral) • 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 Changes in version 0.9.200.7.1 (2019-03-08) o Explicit setting of RNGversion("3.5.0") in one unit test to accomodate the change in sample() in R 3.6.0 o Back-ported a fix to the Wishart RNG from upstream (Dirk in #248 fixing #247) Changes in version 0.9.200.7.0 (2019-01-17) o Upgraded to Armadillo release 9.200.7 (Carpe Noctem) o Fixes in 9.200.7 compared to 9.200.5: • handling complex compound expressions by trace() • handling .rows() and .cols() by the Cube class Changes in version 0.9.200.5.0 (2018-11-28) o Upgraded to Armadillo release 9.200.5 (Carpe Noctem) o Changes in this release • linking issue when using fixed size matrices and vectors • faster handling of common cases by princomp() Changes in version 0.9.200.4.0 (2018-11-10) o Upgraded to Armadillo release 9.200.4 (Carpe Noctem) • 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() • faster handling of sparse matrices by join_rows() • 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 • workaround for gcc and clang bug in C++17 mode o Commented-out sparse matrix test consistently failing on the fedora-clang machine CRAN, and only there. No fix without access. o The 'Unit test' vignette is no longer included. Changes in version 0.9.100.5.0 (2018-08-16) o Upgraded to Armadillo release 9.100.4 (Armatus Ad Infinitum) • 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 smarter use of the element cache in sparse matrices • smarter use of the element cache in sparse matrices o Aligned OpenMP flags in the RcppArmadillo.package.skeleton used Makevars(,.win) to not use one C and C++ flag. Changes in version 0.8.600.0.0 (2018-06-29) o Upgraded to Armadillo release 8.600.0 (Sabretooth Rugrat) • 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 Changes in version 0.8.500.1.1 o Upgraded to Armadillo release 8.500.1 (Caffeine Raider) • bug fix for banded matricex o Added slam to Suggests: as it is used in two unit test functions [CRAN requests] o The RcppArmadillo.package.skeleton() function now works with example_code=FALSE when pkgKitten is present (Santiago Olivella in #231 fixing #229) o The LAPACK tests now cover band matrix solvers (Keith O'Hara in #230). Changes in version 0.8.500.0 (2018-04-30) o Upgraded to Armadillo release 8.500 (Caffeine Raider) • faster handling of sparse matrices by kron() and repmat() • faster transpose of sparse matrices • faster element access in sparse matrices • faster row iterators for sparse matrices • faster handling of compound expressions by trace() • more efficient handling of aliasing in submatrix views • expanded normalise() to handle sparse matrices • expanded .transform() and .for_each() to handle sparse matrices • added reverse() for reversing order of elements • added repelem() for replicating elements • added roots() for finding the roots of a polynomial o Fewer LAPACK compile-time guards are used, new unit tests for underlying features have been added (Keith O'Hara in #211 addressing #207). o The configure check for LAPACK features has been updated accordingly (Keith O'Hara in #214 addressing #213). o The compile-time check for g++ is now more robust to minimal shell versions (#217 addressing #216). o Compiler tests to were added for macOS (Keith O'Hara in #219). Changes in version 0.8.400.0.0 (2018-03-01) o Upgraded to Armadillo release 8.400.0 (Entropy Bandit) • 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() • added wishrnd() and iwishrnd() o The configure generated header settings for LAPACK and OpenMP can be overridden by the user. o This release was preceded by two release candidates which were tested extensively. Changes in version 0.8.300.1.0 (2017-12-06) o Upgraded to Armadillo release 8.300.1 (Tropical Shenanigans) • faster handling of band matrices by solve() • faster handling of band matrices by chol() • faster randg() when using OpenMP • added normpdf() • expanded .save() to allow appending new datasets to existing HDF5 files o Includes changes made in several earlier GitHub-only releases (versions 0.8.300.0.0, 0.8.200.2.0 and 0.8.200.1.0). o Conversion from simple_triplet_matrix is now supported (Serguei Sokol in #192). o Updated configure code to check for g++ 5.4 or later to enable OpenMP. o Updated the skeleton package to current packaging standards o Suppress warnings from Armadillo about missing OpenMP support and -fopenmp flags by setting ARMA_DONT_PRINT_OPENMP_WARNING Changes in version 0.8.100.1.0 (2017-10-11) o Upgraded to Armadillo release 8.100.1 (Feral Pursuits) • faster incremental construction of sparse matrices via element access operators • faster diagonal views in sparse matrices • expanded SpMat to save/load sparse matrices in coord format • expanded .save(),.load() to allow specification of datasets within HDF5 files • added affmul() to simplify application of affine transformations • warnings and errors are now printed by default to the std::cerr stream • added set_cerr_stream() and get_cerr_stream() to replace set_stream_err1(), set_stream_err2(), get_stream_err1(), get_stream_err2() • new configuration options ARMA_COUT_STREAM and ARMA_CERR_STREAM o Constructors for sparse matrices of types dgt, dtt amd dst now use Armadillo code for improved performance (Serguei Sokol in #175 addressing #173) o Sparse matrices call .sync() before accessing internal arrays (Binxiang Ni in #171) o The sparse matrix vignette has been converted to Rmarkdown using the pinp package, and is now correctly indexed. (#176) Changes in version 0.7.960.1.2 (2017-08-29) o On macOS, OpenMP support is now turned off (#170). o The package is now compiling under the C++11 standard (#170). o The vignette dependency are correctly set (James and Dirk in #168 and #169) Changes in version 0.7.960.1.1 (2017-08-20) o Added improved check for inherited S4 matrix classes (#162 fixing #161) o Changed fastLm C++ function to fastLm_impl to not clash with R method (#164 fixing #163) o Added OpenMP check for configure (#166 fixing #165) Changes in version 0.7.960.1.0 (2017-08-17) o Upgraded to Armadillo release 7.960.1 (Northern Banana Republic Deluxe) • faster randn() when using OpenMP (NB: usually omitted when used fromR) • faster gmm_diag class, for Gaussian mixture models with diagonal covariance matrices • added .sum_log_p() to the gmm_diag class • added gmm_full class, for Gaussian mixture models with full covariance matrices • expanded .each_slice() to optionally use OpenMP for multi-threaded execution o Upgraded to Armadillo release 7.950.0 (Northern Banana Republic) • expanded accu() and sum() to use OpenMP for processing expressions with computationally expensive element-wise functions • expanded trimatu() and trimatl() to allow specification of the diagonal which delineates the boundary of the triangular part o Enhanced support for sparse matrices (Binxiang Ni as part of Google Summer of Code 2017) • Add support for dtCMatrix and dsCMatrix (#135) • Add conversion and unit tests for dgT, dtT and dsTMatrix (#136) • Add conversion and unit tests for dgR, dtR and dsRMatrix (#139) • Add conversion and unit tests for pMatrix and ddiMatrix (#140) • Rewrite conversion for dgT, dtT and dsTMatrix, and add file-based tests (#142) • Add conversion and unit tests for indMatrix (#144) • Rewrite conversion for ddiMatrix (#145) • Add a warning message for matrices that cannot be converted (#147) • Add new vignette for sparse matrix support (#152; Dirk in #153) • Add support for sparse matrix conversion from Python SciPy (#158 addressing #141) o Optional return of row or column vectors in collapsed form if appropriate #define is set (Serguei Sokol in #151 and #154) o Correct speye() for non-symmetric cases (Qiang Kou in #150 closing #149). o Ensure tests using Scientific Python and reticulate are properly conditioned on the packages being present. o Added .aspell/ directory with small local directory now supported by R-devel. Changes in version 0.7.900.2.0 (2017-06-04) o Upgraded to Armadillo release 7.900.2 (Evil Banana Republic) • Expanded clamp() to handle cubes • Computationally expensive element-wise functions (such as exp(), log(), cos(), etc) can now be automatically sped up via OpenMP; this requires a C++11/C++14 compiler with OpenMP 3.0+ support for GCC and clang compilers • One caveat: when using GCC, use of -march=native in conjunction with -fopenmp may lead to speed regressions on recent processors o Added gcc 7 to support compiler check (James Balamuta in #128 addressing #126). o A unit test helper function for rmultinom was corrected (#133). o OpenMP support was added to the skeleton helper in inline.R Changes in version 0.7.800.2.0 (2017-04-13) o Upgraded to Armadillo release 7.800.2 (Rogue State Redux) • The Armadillo license changed to Apache License 2.0 o The DESCRIPTION file now mentions the Apache License 2.0, as well as the former MPL2 license used for earlier releases. o A new file init.c was added with calls to R_registerRoutines() and R_useDynamicSymbols() o Symbol registration is enabled in useDynLib o The fastLm example was updated Changes in version 0.7.700.0.0 (2017-02-08) o Upgraded to Armadillo release 7.700.0 (Rogue State) • added polyfit() and polyval() • added second form of log_det() to directly return the result as a complex number • added range() to statistics functions • expanded trimatu()/trimatl() and symmatu()/symmatl() to handle sparse matrice Changes in version 0.7.600.2.0 o Upgraded to Armadillo release 7.600.2 (Coup d'Etat Deluxe) • Bug fix to memory allocation for fields Changes in version 0.7.600.1.0 (2016-12-18) o Upgraded to Armadillo release 7.600.1 (Coup d'Etat Deluxe) • more accurate eigs_sym() and eigs_gen() • expanded floor(), ceil(), round(), trunc(), sign() to handle sparse matrices • added arg(), atan2(), hypot() Changes in version 0.7.500.1.0 o Upgraded to Armadillo release 7.500.1 o Small improvement to return value treatment o The sample.h extension was updated to the newer Armadillo interface. (Closes #111) Changes in version 0.7.500.0.0 (2016-10-22) o Upgraded to Armadillo release 7.500.0 (Coup d'Etat) • Expanded qz() to optionally specify ordering of the Schur form • Expanded each_slice() to support matrix multiplication Changes in version 0.7.400.2.0 (2016-08-25) o Upgraded to Armadillo release 7.400.2 (Feral Winter Deluxe) • added expmat_sym(), logmat_sympd(), sqrtmat_sympd() • added .replace() Changes in version 0.7.300.1.0 o Upgraded to Armadillo release 7.300.1 • added index_min() and index_max() standalone functions • expanded .subvec() to accept size() arguments • more robust handling of non-square matrices by lu() Changes in version 0.7.200.2.0 (2016-07-24) o Upgraded to Armadillo release 7.200.2 o The sampling extension was rewritten to use Armadillo vector types instead of Rcpp types (PR #101 by James Balamuta) Changes in version 0.7.200.1.0 o Upgraded to Armadillo release 7.200.1 • 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() o The configure code now (once again) sets the values for the LAPACK feature #define correctly. Changes in version 0.7.100.3.0 (2016-05-27) o Upgraded to Armadillo test release 7.100.3 • 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 (code contributed by Yixuan Qiu) o The configure code now checks against old g++ version which are no longer sufficient to build the package. Changes in version 0.6.700.6.0 (2016-05-06) o Upgraded to Armadillo 6.700.6 (Catabolic Amalgamator Deluxe) • fix for handling empty matrices by kron() • fix for clang warning in advanced matrix constructors • fix for false deprecated warning in trunc_log() and trunc_exp() • fix for gcc-6.1 warning about misleading indentation • corrected documentation for the solve() function o Added support for int64_t (ARMA_64BIT_WORD) when required during compilation time. (PR #90 by George G. Vega Yon, fixing #88) o Fixed bug in SpMat exporter (PR #91 by George G. Vega Yon, fixing #89 and #72) Changes in version 0.6.700.3.0 (2016-04-06) o Upgraded to Armadillo 6.700.3 (Catabolic Amalgamator Deluxe) • 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 Changes in version 0.6.600.4.0 (2016-03-16) o Upgraded to Armadillo 6.600.4 (Catabolic Amalgamator) • 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 o The configure script now reflects the full LAPACK fallback offered by R 3.3.0 or later (PR #81) Changes in version 0.6.500.4.0 (2016-01-27) o Upgraded to Armadillo 6.500.4 (Gourmet Electron Jumper) • 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 o The configure script now uses #!/usr/bin/env bash to cope with systems that do not have #!/bin/bash (PR #75 fixing issue #74) o RcppArmadillo now defines ARMA_32BIT_WORD to ensure we always use integer vectors that be passed to R Changes in version 0.6.400.2.0 o Upgraded to Armadillo 6.400.2 ("Flying Spaghetti Monster Deluxe") • 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 Changes in version 0.6.300.2.2 (2015-12-13) o Upgraded to Armadillo 6.300.3-test ("Flying Spaghetti Monster") • Additional test in auxlib_meat.hpp for limited LAPACK o Updated test and #define for limited LAPACK version R might be built with on Unix-alike systems Changes in version 0.6.300.2.0 (2015-12-03) o Upgraded to Armadillo 6.300.2 ("Flying Spaghetti Monster") • 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() o Added support for Cube types via as<> converters (PR #64 by Nathan Russell, fixing #63 and #42) Changes in version 0.6.200.2.0 (2015-10-31) o Upgraded to Armadillo 6.200.0 ("Midnight Blue Deluxe") • expanded diagmat() to handle non-square matrices and arbitrary diagonals • expanded trace() to handle non-square matrices Changes in version 0.6.100.0.0 (2015-10-04) o Upgraded to Armadillo 6.100.0 ("Midnight Blue") • faster norm() and normalise() when using ATLAS or OpenBLAS • added Schur decomposition: schur() • stricter handling of matrix objects by hist() and histc() • advanced constructors for using auxiliary memory by Mat, Col, Row and Cube 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 Changes in version 0.6.000.1.0 o Upgraded to Armadillo test / bug-fix release 0.6.000.1-test o Non-CRAN release Changes in version 0.5.600.2.0 (2015-09-20) o Upgraded to Armadillo 5.600.2 ("Molotov Cocktail Deluxe") • 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() Changes in version 0.5.500.2.0 (2015-09-03) o Upgraded to Armadillo 5.500.2 ("Molotov Cocktail") • expanded object constructors and generators to handle size() based specification of dimensions • faster handling of submatrix rows • faster clamp() • fixes for handling sparse matrices Changes in version 0.5.400.2.0 (2015-08-17) o Upgraded to Armadillo 5.400.2 ("Plutocracy Incorporated Deluxe") • 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 o corrected use of kitten() thanks to Grant Brown Changes in version 0.5.300.4 (2015-08-04) o Upgraded to Armadillo 5.300.4 ("Plutocrazy Incorporated") • 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) o Added importFrom statements for R functions not from base o Added explicit Rcpp::sourceCpp() reference as well o Updated one formatting detail in vignette to please TeXlive2015 Changes in version 0.5.200.1.0 (2015-06-05) o Upgraded to Armadillo release 5.200.1 ("Boston Tea Smuggler") • 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 o Added another example to inst/examples/fastLm.r Changes in version 0.5.100.2.0 o Upgraded to Armadillo test / bug-fix release 5.100.2 o Non-CRAN release Changes in version 0.5.100.1.0 (2015-05-01) o Upgraded to Armadillo release 5.100.1 ("Ankle Biter Deluxe") • 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 Changes in version 0.5.000.0 (2015-04-21) o Upgraded to Armadillo release Version 5.000 ("Ankle Biter") • 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 Changes in version 0.4.999.1.0 o Upgraded to Armadillo release preview 4.999.1 o Non-CRAN test release Changes in version 0.4.650.1.1 (2015-02-26) o Upgraded to Armadillo release Version 4.650.1 ("Intravenous Caffeine Injector") • 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 o Applied small correction to main header file to set up C++11 RNG whether or not the alternate RNG (based on R, our default) is used Changes in version 0.4.600.4.0 (2015-01-25) o Upgraded to Armadillo release Version 4.600.4 (still "Off The Reservation") • Speedups in the transpose operation • Small bug fixes Changes in version 0.4.600.0 (2014-12-28) o Upgraded to Armadillo release Version 4.600 ("Singapore Sling Deluxe") • 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 Changes in version 0.4.550.2.0 o Upgraded to Armadillo release Version 4.550.2 ("Singapore Sling Deluxe") • Bug fixes for implicit template initiation for std::pow() seen with the old g++ 4.4* series Changes in version 0.4.550.1.0 (2014-11-28) o Upgraded to Armadillo release Version 4.550.1 ("Singapore Sling Deluxe") • 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 • applied correction to gmm_diag relative to the 4.550 release o The Armadillo Field type is now converted in as<> conversions Changes in version 0.4.500.0 (2014-10-30) o Upgraded to Armadillo release Version 4.500 ("Singapore Sling") • 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 o The sample functionality has been extended to provide the Walker Alias method (including new unit tests) via a pull request by Christian Gunning Changes in version 0.4.450.1.0 (2014-09-22) o Upgraded to Armadillo release Version 4.450.1 (Spring Hill Fort) • 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 o A new random-number implementation for Armadillo uses the RNG from R as a fallback (when C++11 is not selected so the C++11-based RNG is unavailable) which avoids using the older C++98-based std::rand o The RcppArmadillo.package.skeleton() function was updated to only set an "Imports:" for Rcpp, but not RcppArmadillo which (as a template library) needs only LinkingTo: o The RcppArmadillo.package.skeleton() function will now prefer pkgKitten::kitten() over package.skeleton() in order to create a working package which passes R CMD check. o The pkgKitten package is now a Suggests: o A manual page was added to provide documentation for the functions provided by the skeleton package. o A small update was made to the package manual page. Changes in version 0.4.400.0 (2014-08-19) o Upgraded to Armadillo release Version 4.400 (Winter Shark Alley) • 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 o Corrected a bug (found by the g++ Address Sanitizer) in sparse matrix initialization where space for a sentinel was allocated, but the sentinel was not set; with extra thanks to Ryan Curtin for help o Added a few unit tests for sparse matrices Changes in version 0.4.320.0 (2014-07-05) o Upgraded to Armadillo release Version 4.320 (Daintree Tea Raider) • 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 Changes in version 0.4.300.8.0 (2014-06-04) o Upgraded to Armadillo release Version 4.300.8 (Medieval Cornea Scraper) • More robust norm-related functions • Fixes between interactions between cube and vector types. o Adds a #define ARMA_DONT_USE_CXX11 to provide an option to turn C++11 off for Armadillo (but client packages may still use it) o More robust Windows detection by using _WIN32 as well as WIN32 as the latter gets diabled by MinGW with C++11 o On Windows, C++11 is turned off as the Armadillo code base uses more features of C++11 than g++ 4.6.2 version in Rtools implements Changes in version 0.4.300.5.0 o Upgraded to Armadillo release Version 4.300.5 (Medieval Cornea Scraper) • Handle possible underflows and overflows in norm(), normalise(), norm_dot() • Fix for handling of null vectors by norm_dot() Changes in version 0.4.300.2.0 o Upgraded to Armadillo release Version 4.300.2 (Medieval Cornea Scraper) • faster find() Changes in version 0.4.300.0 (2014-05-05) o Upgraded to Armadillo release Version 4.300 (Medieval Cornea Scraper) • 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) o Corrected conversion to unsigned int vectors and matrices o Configure script now checks for R version 3.0.3 or newer to enable complex divide-and-conquer SVD in case of R-supplied LAPACK Changes in version 0.4.200.0 (2014-04-07) o Upgraded to Armadillo release Version 4.200 (Flintlock Swoop) • faster transpose of sparse matrices • more efficient handling of aliasing during matrix multiplication • faster inverse of matrices marked as diagonal Changes in version 0.4.100.2 o Upgraded to Armadillo release Version 4.100.2 • fix for handling null vectors by normalise() • fix for memory handling by sparse matrices o Correct use of [[ depends()]] in skeleton example file o Prepare src/Makevars for C++11 support from R 3.1.0 by defining USE_CXX11 which is currently commented out o In the Armadillo configuration, turn on C++11 support if USE_CXX11 is defined Changes in version 0.4.100.0 (2014-03-01) o Upgraded to Armadillo release Version 4.100.0 (Dirt Cruiser) • 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 Changes in version 0.4.000.4 (2014-02-20) o Upgraded to Armadillo release Version 4.000.4 • fix for randi() generating out-of-interval values • fix for saving field objects • workaround for a bug in the Intel compiler o Updated for Rcpp (>= 0.11.0) by removing linking step from build process, added appropriate dependency on Rcpp o Updated RcppArmadillo.package.skeleton function accordingly to use proper NAMESPACE import o Rewritten rcpparma_hello_world (which is used by the RcppArmadillo.package.skeleton function) to use Rcpp Attributes, and added more examples o Added two functions to set Armadillo's RNGs (ie the system RNG) from a given value and to randomize it, as suggested by Gábor Csárdi. Note that these do not work within RStudio (which itself also uses the same system RNG). Changes in version 0.4.000.2 (2014-01-22) o Upgraded to Armadillo release Version 4.000.2 • fix for randi() generating out-of-interval values • workaround for a bug in the Intel compiler Changes in version 0.4.000 (2014-01-06) o Upgraded to Armadillo release Version 4.000 (Feral Steamroller) • added eigen decompositions of sparse matrices: eigs_sym() and eigs_gen() [ but this requires linking against ARPACK which RcppArmadillo as a pure-template package does not do, and R is not linked against ARPACK either. ] • 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) Changes in version 0.3.930.1 (2013-12-10) o Upgraded to Armadillo release Version 3.930.1 • Armadillo falls back to standard complex svd if the more performant divide-and-conquer variant is unavailable o Added detection for Lapack library and distinguish between R's own version (withhout zgesdd) and system Lapack; a preprocessor define is set accordingly Changes in version 0.3.930.0 o Upgraded to Armadillo release Version 3.930 ("Dragon's Back") • 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 o New unit tests for complex matrices and vectors Changes in version 0.3.920.3 (2013-12-06) o Upgraded to Armadillo release Version 3.920.3 • fix for handling of tiny matrices by .swap() Changes in version 0.3.920.1 (2013-09-29) o Upgraded to Armadillo release Version 3.920.1 (Agencia Nacional Stasi) • 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) o Initial implementation of wrap o Improved implementation of as<>() and wrap() for sparse matrices o Converted main vignette from LaTeX style minted to lstlisting which permits builds on CRAN; removed set BuildVignettes: FALSE. Changes in version 0.3.910.0 (2013-08-15) o Upgraded to Armadillo release Version 3.910.0 (Pyrenees) • 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 o Added conversion support for sparse matrices (of type double) created by the Matrix package as class dgCMatrix o Moved vignette sources from inst/doc to vignettes; set BuildVignettes: FALSE as the minted mode for LaTeX upsets the CRAN builders. Changes in version 0.3.900.7 (2013-08-04) o Upgraded to Armadillo release Version 3.900.7 (Bavarian Sunflower) • minor fix for inplace reshape() • minor corrections for compilation issues under GCC 4.8+ and MSVC o Corrected setting of vec_stats in intialization of row, vector and matrix objects o The inline package is no longer used in the examples and unit tests which have all been converted to using Rcpp attributes Changes in version 0.3.900 o Upgraded to Armadillo release Version 3.900.0 (Bavarian Sunflower) • 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 o Kalman filter example switched from inline to sourceCpp, which simplifies / streamlines the C++ side a little Changes in version 0.3.820 (2013-05-13) o Upgraded to Armadillo release Version 3.820 (Mt Cootha) • 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 Changes in version 0.3.810.2 (2013-04-30) o Upgraded to Armadillo release Version 3.810.2 • minor fix for initialisation of sparse matrices Changes in version 0.3.810.0 (2013-04-20) o Upgraded to Armadillo release Version 3.810.0 (Newell Highway) • 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 o Updated sample() function and test again contributed by Christian Gunning Changes in version 0.3.800.1 (2013-03-13) o Upgraded to Armadillo release Version 3.800.1 (Miami Beach) • workaround for a bug in ATLAS 3.8 on 64 bit systems • faster matrix-vector multiply for small matrices o Added new sample() function and tests contributed by Christian Gunning o Refactored unit testing code for faster unit test performance Changes in version 0.3.800.0 (2013-03-02) o Upgraded to Armadillo release Version 3.800.0 (Miami Beach) • 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 o Updated vignette to paper now in press at CSDA o Added CITATION file with reference to CSDA paper Changes in version 0.3.6.3 (2013-02-20) o Upgraded to Armadillo release Version 3.6.3 • faster find() • minor fix for non-contiguous submatrix views to handle empty vectors of indices • reduction of pedantic compiler warnings Changes in version 0.3.6.2 (2013-01-30) o Upgraded to Armadillo release Version 3.6.2 • faster determinant for matrices marked as diagonal or triangular • more fine-grained handling of 64 bit integers o Added a new example of a Kalman filter implementation in R, and C++ using Armadillo via RcppArmadillo, complete with timing comparison Changes in version 0.3.6.1 (2012-12-17) o Upgraded to Armadillo release Version 3.6.1 (Piazza del Duomo) • faster trace() • fix for handling sparse matrices by dot() • fixes for interactions between sparse and dense matrices o Now throws compiler error if Rcpp.h is included before RcppArmadillo.h (as the former is included automatically by the latter anyway, but template logic prefers this ordering). Changes in version 0.3.4.3 (2012-10-04) o Upgraded to Armadillo release 3.4.3 • fix for aliasing issue in diagmat() • fix for speye() signature Changes in version 0.3.4.2 (2012-09-25) o Upgraded to Armadillo release 3.4.2 • minor fixes for handling sparse submatrix views • minor speedups for sparse matrices Changes in version 0.3.4.1 (2012-09-18) o Upgraded to Armadillo release 3.4.1 • 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 Changes in version 0.3.4.0 (2012-09-06) o Upgraded to Armadillo release 3.4.0 (Ku De Ta) • 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() o NEWS file converted to Rd format Changes in version 0.3.3.91 o Upgraded to Armadillo release 3.3.91 • faster singular value decomposition via "divide and conquer" algorithm • 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, James Cline and Matthew Amidon (Georgia Institute of Technology) o Corrected summary method to deal with the no intercept case when using a formula; also display residual summary() statistics o Expanded unit tests for fastLm Changes in version 0.3.2.4 (2012-07-12) o Upgraded to Armadillo release 3.2.4 • workaround for a regression (bug) in GCC 4.7.0 and 4.7.1 Changes in version 0.3.2.3 (2012-07-02) o Upgraded to Armadillo release 3.2.3 • minor correction for declaration of fixed size vectors and matrices • Reverted three header files {Mat,Row,Col}_bones.hpp back to previous release due to compilation failures under g++-4.7 • Added new vignette 'RcppArmadillo-intro' based on a just-submitted introductory paper (by Eddelbuettel and Sanderson) about RcppArmadillo • Change from release 3.2.2 which we skipped as it did not really affect builds under R: • minor fix for compiling without debugging enabled (aka release mode) • better detection of ATLAS during installation on Fedora and Red Hat systems • Small enhancement to fastLm Changes in version 0.3.2.0 (2012-05-21) o Upgraded to Armadillo release 3.2.0 "Creamfields" • 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 Changes in version 0.3.1.94 o Upgraded to Armadillo release 3.1.94 "v3.2 beta 2" • 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) Changes in version 0.3.1.92 o Upgraded to Armadillo release 3.1.92 "v3.2 beta 2" • added unique(), for finding unique elements of a matrix • faster eigen decomposition via optional use of "divide and conquer" by eig_sym() • faster transpose of vectors and compound expressions Changes in version 0.3.0.3 (2012-05-04) o Upgraded to Armadillo release 3.0.3 • fixes for inplace transpose of complex number matrices • fixes for complex number version of svd_econ() • fixes for potential aliasing issues with submatrix views o New example script fastLm Changes in version 0.3.0.2 (2012-04-19) o Upgraded to Armadillo release 3.0.2 • fixes for handling diagonal matrices o Undefine NDEBUG if it has been set (as R does) as this prevents a number of useful debugging checks. Users can still define it or define ARMA_NO_DEBUG if they want a 'non-development' build Changes in version 0.3.0.1 (2012-04-12) o Upgraded to Armadillo release 3.0.1 • fixes for compilation errors • fixes for potential aliasing issues Changes in version 0.3.0 (2012-04-11) o Upgraded to Armadillo release 3.0.0 "Antarctic Chilli Ranch" • 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) Changes in version 0.2.40 o Upgraded to Armadillo release 2.99.4 "Antarctic Chilli Ranch (Beta 4)" • fixes for handling expressions with fixed size matrices Changes in version 0.2.39 o Upgraded to Armadillo release 2.99.3 "Antarctic Chilli Ranch (Beta 3)" • faster repmat() • workarounds for braindead compilers (eg. Visual Studio) Changes in version 0.2.38 o Upgraded to Armadillo release 2.99.2 "Antarctic Chilli Ranch (Beta 2)" • 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) Changes in version 0.2.37 o Upgraded to Armadillo release 2.99.1 "Antarctic Chilli Ranch (Beta 1)" • 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() Changes in version 0.2.36 (2012-03-06) o Upgraded to Armadillo release 2.4.4 • fixes for qr() and syl() • more portable wall_clock class • faster relational operators on submatrices Changes in version 0.2.35 (2012-02-17) o Upgraded to Armadillo release 2.4.3 • Support for ARMA_DEFAULT_OSTREAM using Rcpp::Rcout added • Minor bug fix release improving corner cases affecting builds: • Missing semicolon added in Mat_meat (when in C++0x mode), with thanks to Teo Guo Ci • Armadillo version vars now instantiated in RcppArmadillo.cpp which helps older g++ versions, with thanks to Gershon Bialer • Thanks also to Martin Renner for testing these changes • Unit tests output fallback directory changed per Brian Ripley's request to not ever use /tmp • Minor update to version numbers in RcppArmadillo-package.Rd Changes in version 0.2.34 (2011-12-13) o Upgraded to Armadillo release 2.4.2 • clarified documentation for .reshape() • fix for handling of empty matrices by .resize() Changes in version 0.2.33 (2011-12-07) o Upgraded to Armadillo release 2.4.1 • added .resize() • fix for vector initialisation Changes in version 0.2.32 (2011-12-05) o Upgraded to Armadillo test release 2.4.0 "Loco Lounge Lizard" o Minimal changes relative to 0.2.31 based on 2.3.92, next section is relative to the previous stable release series 2.2.* of Armadillo • 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 Changes in version 0.2.31 (2011-11-29) o Upgraded to Armadillo test release 2.3.92 "Loco Lounge Lizard (Beta 2)" • fixes for linking on Ubuntu and Debian systems • fixes for inconsistencies in interactions between matrices and cubes Changes in version 0.2.30 (2011-11-20) o Upgraded to Armadillo test release 2.3.91 "Loco Lounge Lizard (Beta 1)" • 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 Changes in version 0.2.29 (2011-09-02) o Upgraded to Armadillo release 2.2.3 • Release fixes a speed issue in the as_scalar() function. Changes in version 0.2.28 (2011-08-02) o Upgraded to Armadillo release 2.2.1 "Blue Skies Debauchery" • 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 Changes in version 0.2.27 (2011-07-23) o Upgraded to Armadillo release 2.1.91 "v2.2 beta 1" • 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() Changes in version 0.2.26 (2011-07-23) o Upgraded to Armadillo release 2.0.2 • 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() Changes in version 0.2.25 (2011-06-30) o Upgraded to Armadillo 2.0.1 which fixes two minor compilation issues Changes in version 0.2.24 o Upgraded to Armadillo release 2.0.0 "Carnivorous Sugar Glider" • 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() Changes in version 0.2.23 (2011-06-24) o Upgraded to Armadillo release 1.99.5 "v2.0 beta 5" • 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 o fastLmPure() now uses same argument order as R's lm.fit() o Export and document S3 methods in NAMESPACE and manual page as such Changes in version 0.2.22 (2011-06-06) o Upgraded to Armadillo release 1.99.4 "v2.0 beta 4" • fixes for handling of tiny matrices Changes in version 0.2.21 (2011-05-28) o Upgraded to Armadillo release 1.99.3 "v2.0 beta 3" • stricter size checking for row and column vectors • added .count() member function to running_stat and running_stat_vec Changes in version 0.2.20 (2011-05-26) o Upgraded to Armadillo release 1.99.2 "v2.0 beta 2" (and 1.99.1 before) • faster inverse of symmetric matrices • faster element access for fixed size matrices • faster multiplication of tiny matrices (eg. 4x4) • faster compund expressions containing submatrices • added handling of arbitrarily sized empty matrices (eg. 5x0) • added syl() • added strans() • added symmatu()/symmatl() • added submatrices of submatrices • htrans() has been deprecated; use trans() instead • trans() now takes the complex conjugate when transposing a complex matrix • .is_vec() now outputs true for empty matrices • most functions with matrix inputs no longer throw exceptions when given empty matrices (eg. 5x0) o Added a new subdirectory examples/ seeded with a nice Vector Autoregression simulation simulation example by Lance Bachmeier o Rewrote armadillo_version as to no longer require an instance of arma::arma_version, with tanks to Conrad for the suggestion Changes in version 0.2.19 (2011-04-24) o Upgraded to Armadillo version 1.2.0 "Unscrupulous Carbon Emitter" • Added ability to use Blas & Lapack libraries with capitalised function names • Reduction of pedantic compiler warnings Changes in version 0.2.18 (2011-04-04) o Upgraded to Armadillo version 1.1.92 "Jurassic Barbecue" • Bugfix in cor() • Automatic installation now requires CMake >= 2.6 Changes in version 0.2.17 (2011-03-23) o Upgraded to Armadillo version 1.1.90 "Inside Job" • Added .min() & .max(), which can provide the extremum's location • More robust mean(), var(), stddev() Changes in version 0.2.16 (2011-03-11) o Upgraded to Armadillo version 1.1.8 "Kangaroo Steak" • 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() Changes in version 0.2.15 (2011-03-04) o Upgraded to Armadillo version 1.1.6 “Baby Carpet Shark” • fixed size matrices and vectors can use auxiliary (external) memory • .in_range() can use span() arguments • subfields can use span() arguments Changes in version 0.2.14 (2011-03-04) o Support Run-Time Type Information (RTTI) on matrices by setting the state variable vec_state in Row and Col instantiation, with thanks to Conrad Sanderson for the hint o fastLm code simplified further by instantiating the Armadillo matrix and vector directly from the SEXP coming from R o inst/doc/Makefile now respects $R_HOME environment variable Changes in version 0.2.13 (2011-02-19) o Upgraded to Armadillo version 1.1.4 “Manta Lodge” • Faster sort() • Updated installation to detect recent versions of Intel's MKL • Added interpretation of arbitrary "flat" subcubes as matrices Changes in version 0.2.12 (2011-02-16) o Upgraded to Armadillo version 1.1.2 “Flood Kayak” • Faster prod() • Faster solve() for compound expressions • Fix for compilation using GCC's C++0x mode • Fix for matrix handling by subcubes Changes in version 0.2.11 (2011-01-08) o Upgraded to Armadillo version 1.1.0 “Climate Vandal” • 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(), inv() via explicit handling of triangular matrices • The stream for logging of errors and warnings can now be changed o New unexported R function SHLIB, a small wrapper around R CMD SHLIB, which can be used as Rscript -e "RcppArmadillo:::SHLIB('foo.cpp')" Changes in version 0.2.10 (2010-11-26) o Upgraded to Armadillo 1.0.0 "Antipodean Antileech" • After 2 1/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. o R/RcppArmadillo.package.skeleton.R: Updated to no longer rely on GNU make for builds of packages using RcppArmadillo o summary() for fastLm() objects now returns r.squared and adj.r.squared Changes in version 0.2.9 (2010-11-12) o Upgraded to Armadillo 0.9.92 "Wall Street Gangster": • Fixes for compilation issues under the Intel C++ compiler • Added matrix norms Changes in version 0.2.8 (2010-10-16) o Upgraded to Armadillo 0.9.90 "Water Dragon": • Added unsafe_col() • Speedups and bugfixes in lu() • Minimisation of pedantic compiler warnings o Switched NEWS and ChangeLog between inst/ and the top-level directory so that NEWS (this file) gets installed with the package Changes in version 0.2.7 (2010-09-26) o Upgraded to Armadillo 0.9.80 "Chihuahua Muncher": • Added join_slices(), insert_slices(), shed_slices() • Added in-place operations on diagonals • Various speedups due to internal architecture improvements Changes in version 0.2.6 (2010-09-13) o Upgraded to Armadillo 0.9.70 "Subtropical Winter Safari" o arma::Mat, arma::Row and arma::Col get constructor that take vector or matrix sugar expressions. See the unit test "test.armadillo.sugar.ctor" and "test.armadillo.sugar.matrix.ctor" for examples. Changes in version 0.2.5 (2010-08-05) o Upgraded to Armadillo 0.9.60 "Killer Bush Turkey" Changes in version 0.2.4 (2010-07-29) o Upgraded to Armadillo 0.9.52 'Monkey Wrench' o src/fastLm.cpp: Switch from inv() to pinv() as inv() now tests for singular matrices and warns and returns an empty matrix which stops the example fastLm() implementation on the manual page - and while this is generally reasonably it makes sense here to continue which the Moore-Penrose pseudo-inverse allows us to do this Changes in version 0.2.3 (2010-06-15) o Better configuration to detect suncc (which does not have std::isfinite) Changes in version 0.2.2 (2010-06-09) o Added RcppArmadillo:::CxxFlags for cases where RcppArmadillo is not used via a package o Upgraded to Armadillo 0.9.10 'Chilli Espresso' o Wrap support for mtOp, i.e. operations involving mixed types such as a complex and an arma::mat, which have been introduced in armadillo 0.9.10 o Wrap support for mtGlue, i.e. operations involving matrices of mixed types such as an arma::mat and an arma::imat, which have been introduced in armadillo 0.9.10 o Included an inline plugin to support the plugin system introduced in inline 0.3.5. The unit tests have moved from the src directory to the unit test directory (similar to Rcpp) using cxxfunction with the RcppArmadillo plugin. Changes in version 0.2.1 (2010-05-19) o Bug-fix release permitting compilation on Windows Changes in version 0.2.0 (2010-05-18) o fastLm() is now generic and has a formula interface as well as methods for print, summary, predict to behave like a standard model fitting function o Armadillo sources (using release 0.9.8) are now included in the package using a standardized build suitable for our purposes (not assuming Boost or Atlas) - see ?RcppArmadillo for details o New R function RcppArmadillo.package.skeleton, similar to Rcpp::Rcpp.package.skeleton, but targetting use of RcppArmadillo Changes in version 0.1.0 (2010-03-11) o the fastLm() implementation of a bare-bones lm() fit (using Armadillo's solve() function) provides an example of how efficient code can be written compactly using the combination of Rcpp, RcppAramadillo and Armadillo o support for Rcpp implicit wrap of these types : Mat, Col, Row, Cube where T is one of : int, unsigned int, double, float o support for Rcpp implicit as of these types : Mat, Col, Row where R is one of : int, unsigned int, double, float