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()
Added exporter specialisation for icube
for the
ARMA_64BIT_WORD
case
Upgraded to Armadillo release 14.0.2 (Stochastic Parrot)
Optionally use C++20 memory alignment
Minor corrections for several corner-cases
The order of items displayed by citation()
is reversed (Conrad
in #449)
The DESCRIPTION file now uses an Authors@R field with ORCID IDs
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
New package version numbering scheme following upstream versions
Re-enabling ARMA_IGNORE_DEPRECATED_MARKE
for silent CRAN
builds
Upgraded to Armadillo release 12.8.4 (Cortisol Injector)
Faster handling of sparse submatrix views
Update versioned Depends on Rcpp to 1.0.8 or later to match use of Light/Lighter/Lightest headers.
Upgraded to Armadillo release 12.8.3 (Cortisol Injector)
Fix issue in fft()
and fft2()
in multi-threaded
contexts with FFTW3 enabled
No longer set C++11 for the Rcpp plugin as this standard has been the default by R for very long time now.
One-char bug fix release commenting out one test that upsets reticulate when accessing a scipy sparse matrix
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
Upgraded to Armadillo release 12.8.1 (Cortisol Injector)
Workaround in norm()
for yet another bug in macOS
accelerate framework
Update README for RcppArmadillo usage counts
Update examples to use '#include <RcppArmadillo/Lighter>' for faster compilation excluding unused Rcpp features
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
Five non-user facing top-level include files have been removed (#432 closing #400 and building on #395 and #396)
Upgraded to Armadillo release 12.6.7 (Cortisol Retox)
Fix for saving sparse matrices as CSV files
Added unit tests for thread throttling
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
.
Upgraded to Armadillo release 12.6.6 (Cortisol Retox)
Fix eigs_sym()
, eigs_gen()
and svds()
to
generate deterministic results in ARPACK mode
Add helper functions to set and get the number of OpenMP threads
Store initial thread count at package load and use in thread-throttling helper (and resetter) suitable for CRAN constraints
Upgraded to Armadillo release 12.6.5 (Cortisol Retox)
Fix for corner-case bug in handling sparse matrices with no non-zero elements
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
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
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()
None of the changes above affect R use as RcppArmadillo connects the RNGs used by R to Armadillo
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
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
Accommodate upcoming change in package Matrix (Mikael Jagan in #417 addressing #415)
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
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
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)
The include directory order is now more robust (Kevin Ushey in #407 addressing #406)
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()
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
The CITATION file was updated to the current format
The #define ARMA_IGNORE_DEPRECATED_MARKER
remains active
to suppress the (upstream) deprecation warnings, see #391 and
#402 for details.
Upgraded to Armadillo release 11.4.3 (Ship of Theseus)
fix corner case in pinv()
when processing symmetric matrices
Protect the undefine of NDEBUG
behind additional opt-in define
Upgraded to Armadillo release 11.4.2 (Ship of Theseus)
more robust handling of corner cases in multi-threaded contexts
Internal header organisation with new sub-directories while providing full compatibility via existing paths (#395 #396)
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)
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
Also applied fixes to avoid g++-12 warnings affecting just a handful of CRAN packages.
Upgraded to Armadillo release 11.2.4 (Classic Roast)
fix handling of std::move()
involving matrices
constructed with auxiliary memory
In the fastLm()
examples, use arma::dot()
to
compute to the inner product (as proposed by Conrad), plus small edits
Support optional #define
named RCPPARMADILLO_FORCE_DEPRECATE
to suppress use of ARMA_IGNORE_DEPRECATED_MARKER
permitting
use and development under deprecation
Accomodate upcoming Matrix 1.4-2 deprecation for conversion (Dirk in #387)
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)
Undefine arma_deprecated
warning as it affects a number
of CRAN packages which will likely need a small transition
Upgraded to Armadillo release 11.2.3 (Classic Roast)
fix Cube::insert_slices()
to accept Cube::slice()
as input
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()
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
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
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()
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).
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
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
Until May 2022, protect correction to Field behavior via
define of RCPP_ARMADILLO_FIX_Field
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.
Upgraded to Armadillo release 10.8.2 (Realm Raider)
fix potential speed regression in pinv()
and rank()
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
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π
Upgraded to Armadillo release 10.7.5
fix aliasing bug in diagmat()
fix detection of 2x2 triangular matrices
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()
Correct dimensions setting in import/export of
arma::field
types, protected by #define
(Jonathan
Berrisch in #352 fixing #351)
Add unit tests for fields
both with and without new
#define
(Dirk)
Upgraded to Armadillo release 10.7.3
fix regression in alias handling by fliplr()
,
flipud()
, reverse()
Upgraded to Armadillo release 10.7.2
more robust handling of diagonal matrices by pinv()
Upgraded to Armadillo release 10.7.1
fix regression in interactions between dense matrix subviews and sparse matrices
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
Upgraded to Armadillo release 10.6.2 (Keep Calm)
fix incorrect use of constexpr
for handling fixed-size
matrices and vectors
improved documentation
GitHub- and drat-only release
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
Upgraded to Armadillo release 10.5.3 (Antipodean Fortress)
GitHub-only release
Extended test coverage with several new tests, added a coverage badge.
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
Added codecov.yml
to exclude Armadillo from coverage analysis
Upgraded to Armadillo release 10.4.1 (Pressure Cooker)
GitHub-only release
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
Apply one upstream corrections for arma::randn
draws
when using alternative (here R) generator, and arma::randg
.
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
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
Removed debian/
directory from repository as packaging
is on salsa.debian.org.
Relaxed tolerance on two cube
tests on Windows to
accomodate new 'gcc10-UCRT' builder.
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
Correct one unit test for Matrix 1.3.0-caused changed (Binxiang in #319 and Dirk in #322).
Suppress one further warning from Matrix (Dirk)
Apply an upstream NaN
correction (Conrad in #321)
Added GitHub Actions CI using run.sh
from r-ci (Dirk)
Upgraded to Armadillo release 10.1.2 (Orchid Ambush)
Remove three unused int constants (#313)
Include main armadillo header using quotes instead of brackets
Rewrite version number use in old-school mode because gcc 4.8.5
Skipping parts of sparse conversion on Windows as win-builder fails
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
Switch Travis CI testing to focal and BSPM
Upgraded to Armadillo release 9.900.3 (Nocturnal Misbehaviour)
More efficient code for initialising matrices with fill::zeros
Fixes for various error messages
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
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
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).
Add two badges to README for indirect use and the CSDA paper.
Adapt RcppArmadillo.package.skeleton()
to a change in R
4.0.0 affecting what it exports in NAMESPACE
.
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
OpenMP capability is tested explicitly (Kevin Ushey and Dirk in #294, #295, and #296 all fixing #290).
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
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
Vignettes are now pre-made and include (#285)
Two test files are now skipped on 32-bit Windows
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()
The sparse matrix test using scipy, if available, is now simplified thanks to recently added reticulate conversions.
Upgraded to Armadillo release 9.800.4 (Horizon Scraper)
fixes for incorrect type promotion in normpdf()
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()
The sample
function passes the prob vector as const allowing
subsequent calls (Christian Gunning in #276 fixing #275)
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()
The package now uses tinytest for unit tests (Dirk in #269).
The configure.ac
script is now more careful about shell
portability (Min Kim in #270).
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
Expanded the list of known good gcc
and clang
versions in configure.ac
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
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 <armadillo>
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
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
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
Explicit setting of RNGversion("3.5.0")
in one unit
test to accomodate the change in sample()
in R 3.6.0
Back-ported a fix to the Wishart RNG from upstream (Dirk in #248 fixing #247)
Upgraded to Armadillo release 9.200.7 (Carpe Noctem)
Fixes in 9.200.7 compared to 9.200.5:
handling complex compound expressions by trace()
handling .rows()
and .cols()
by the
Cube
class
Upgraded to Armadillo release 9.200.5 (Carpe Noctem)
Changes in this release
linking issue when using fixed size matrices and vectors
faster handling of common cases by princomp()
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
Commented-out sparse matrix test consistently failing on the fedora-clang machine CRAN, and only there. No fix without access.
The 'Unit test' vignette is no longer included.
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
Aligned OpenMP flags in the RcppArmadillo.package.skeleton used Makevars(,.win) to not use one C and C++ flag.
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
Upgraded to Armadillo release 8.500.1 (Caffeine Raider)
bug fix for banded matricex
Added slam
to Suggests: as it is used in two unit test
functions [CRAN requests]
The RcppArmadillo.package.skeleton()
function now works
with example_code=FALSE
when pkgKitten is present
(Santiago Olivella in #231 fixing #229)
The LAPACK tests now cover band matrix solvers (Keith O'Hara in #230).
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
Fewer LAPACK compile-time guards are used, new unit tests for underlying features have been added (Keith O'Hara in #211 addressing #207).
The configure check for LAPACK features has been updated accordingly (Keith O'Hara in #214 addressing #213).
The compile-time check for g++
is now more robust to
minimal shell versions (#217 addressing #216).
Compiler tests to were added for macOS (Keith O'Hara in #219).
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()
The configure
generated header settings for LAPACK and
OpenMP can be overridden by the user.
This release was preceded by two release candidates which were tested extensively.
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
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).
Conversion from simple_triplet_matrix
is now supported
(Serguei Sokol in #192).
Updated configure code to check for g++ 5.4 or later to enable OpenMP.
Updated the skeleton package to current packaging standards
Suppress warnings from Armadillo about missing OpenMP support
and -fopenmp
flags by setting ARMA_DONT_PRINT_OPENMP_WARNING
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
Constructors for sparse matrices of types dgt
,
dtt
amd dst
now use Armadillo code for improved
performance (Serguei Sokol in #175 addressing #173)
Sparse matrices call .sync()
before accessing internal
arrays (Binxiang Ni in #171)
The sparse matrix vignette has been converted to Rmarkdown using the pinp package, and is now correctly indexed. (#176)
On macOS, OpenMP support is now turned off (#170).
The package is now compiling under the C++11 standard (#170).
The vignette dependency are correctly set (James and Dirk in #168 and #169)
Added improved check for inherited S4 matrix classes (#162 fixing #161)
Changed fastLm
C++ function to fastLm_impl
to not
clash with R method (#164 fixing #163)
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
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
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)
Optional return of row or column vectors in collapsed form if
appropriate #define
is set (Serguei Sokol in #151 and
#154)
Correct speye()
for non-symmetric cases (Qiang Kou in
#150 closing #149).
Ensure tests using Scientific Python and reticulate are properly conditioned on the packages being present.
Added .aspell/
directory with small local directory now
supported by R-devel.
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
Added gcc 7 to support compiler check (James Balamuta in #128 addressing #126).
A unit test helper function for rmultinom
was
corrected (#133).
OpenMP support was added to the skeleton helper in inline.R
Upgraded to Armadillo release 7.800.2 (Rogue State Redux)
The Armadillo license changed to Apache License 2.0
The DESCRIPTION
file now mentions the Apache License
2.0, as well as the former MPL2 license used for earlier releases.
A new file init.c
was added with calls to
R_registerRoutines()
and R_useDynamicSymbols()
Symbol registration is enabled in useDynLib
The fastLm
example was updated
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
Upgraded to Armadillo release 7.600.2 (Coup d'Etat Deluxe)
Bug fix to memory allocation for fields
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()
Upgraded to Armadillo release 7.500.1
Small improvement to return value treatment
The sample.h
extension was updated to the newer
Armadillo interface. (Closes #111)
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
Upgraded to Armadillo release 7.400.2 (Feral Winter Deluxe)
added expmat_sym()
, logmat_sympd()
,
sqrtmat_sympd()
added .replace()
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()
Upgraded to Armadillo release 7.200.2
The sampling extension was rewritten to use Armadillo vector types instead of Rcpp types (PR #101 by James Balamuta)
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()
The configure
code now (once again) sets the values for
the LAPACK feature #define
correctly.
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)
The configure
code now checks against old g++
version which are no longer sufficient to build the package.
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
Added support for int64_t
(ARMA_64BIT_WORD
) when
required during compilation time. (PR #90 by George G. Vega
Yon, fixing #88)
Fixed bug in SpMat
exporter (PR #91 by George G. Vega Yon,
fixing #89 and #72)
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
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
The configure
script now reflects the full LAPACK
fallback offered by R 3.3.0 or later (PR #81)
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
The configure
script now uses #!/usr/bin/env
bash
to cope with systems that do not have #!/bin/bash
(PR
#75 fixing issue #74)
RcppArmadillo now defines ARMA_32BIT_WORD to ensure we always use integer vectors that be passed to R
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
Upgraded to Armadillo 6.300.3-test ("Flying Spaghetti Monster")
Additional test in auxlib_meat.hpp
for limited LAPACK
Updated test and #define
for limited LAPACK version R
might be built with on Unix-alike systems
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()
Added support for Cube
types via as<>
converters
(PR #64 by Nathan Russell, fixing #63 and #42)
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
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
Upgraded to Armadillo test / bug-fix release 0.6.000.1-test
Non-CRAN release
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()
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
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
corrected use of kitten()
thanks to Grant Brown
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)
Added importFrom
statements for R functions not from base
Added explicit Rcpp::sourceCpp()
reference as well
Updated one formatting detail in vignette to please TeXlive2015
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
Added another example to inst/examples/fastLm.r
Upgraded to Armadillo test / bug-fix release 5.100.2
Non-CRAN release
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
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
Upgraded to Armadillo release preview 4.999.1
Non-CRAN test release
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
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
Upgraded to Armadillo release Version 4.600.4 (still "Off The Reservation")
Speedups in the transpose operation
Small bug fixes
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
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
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
The Armadillo Field type is now converted in as<>
conversions
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
The sample
functionality has been extended to provide
the Walker Alias method (including new unit tests) via a pull request
by Christian Gunning
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
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
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:
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
.
The pkgKitten package is now a Suggests:
A manual page was added to provide documentation for the functions provided by the skeleton package.
A small update was made to the package manual page.
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
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
Added a few unit tests for sparse matrices
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
Upgraded to Armadillo release Version 4.300.8 (Medieval Cornea Scraper)
More robust norm
-related functions
Fixes between interactions between cube
and
vector
types.
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)
More robust Windows detection by using _WIN32
as
well as WIN32
as the latter gets diabled by MinGW with C++11
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
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()
Upgraded to Armadillo release Version 4.300.2 (Medieval Cornea Scraper)
faster find()
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)
Corrected conversion to unsigned int
vectors and
matrices
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
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
Upgraded to Armadillo release Version 4.100.2
fix for handling null vectors by normalise()
fix for memory handling by sparse matrices
Correct use of [[ depends()]]
in skeleton example file
Prepare src/Makevars
for C++11 support from R 3.1.0 by
defining USE_CXX11
which is currently commented out
In the Armadillo configuration, turn on C++11 support if
USE_CXX11
is defined
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
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
Updated for Rcpp (>= 0.11.0) by removing linking step from build process, added appropriate dependency on Rcpp
Updated RcppArmadillo.package.skeleton
function
accordingly to use proper NAMESPACE
import
Rewritten rcpparma_hello_world
(which is used by the
RcppArmadillo.package.skeleton
function) to use Rcpp
Attributes, and added more examples
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).
Upgraded to Armadillo release Version 4.000.2
fix for randi()
generating out-of-interval values
workaround for a bug in the Intel compiler
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)
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
Added detection for Lapack library and distinguish between R's own version (withhout zgesdd) and system Lapack; a preprocessor define is set accordingly
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
New unit tests for complex matrices and vectors
Upgraded to Armadillo release Version 3.920.3
fix for handling of tiny matrices by .swap()
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)
Initial implementation of wrap<subview>
Improved implementation of as<>()
and wrap()
for sparse matrices
Converted main vignette from LaTeX
style minted
to lstlisting
which permits builds on CRAN; removed
set BuildVignettes: FALSE
.
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
Added conversion support for sparse matrices (of type double)
created by the Matrix package as class dgCMatrix
Moved vignette sources from inst/doc
to vignettes
;
set BuildVignettes: FALSE
as the minted
mode for
LaTeX
upsets the CRAN builders.
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
Corrected setting of vec_stats
in intialization of row,
vector and matrix objects
The inline package is no longer used in the examples and unit tests which have all been converted to using Rcpp attributes
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
Kalman filter example switched from inline to sourceCpp
,
which simplifies / streamlines the C++ side a little
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
Upgraded to Armadillo release Version 3.810.2
minor fix for initialisation of sparse matrices
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
Updated sample() function and test again contributed by Christian Gunning
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
Added new sample() function and tests contributed by Christian Gunning
Refactored unit testing code for faster unit test performance
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
Updated vignette to paper now in press at CSDA
Added CITATION file with reference to CSDA paper
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
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
Added a new example of a Kalman filter implementation in R, and C++ using Armadillo via RcppArmadillo, complete with timing comparison
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
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).
Upgraded to Armadillo release 3.4.3
fix for aliasing issue in diagmat()
fix for speye()
signature
Upgraded to Armadillo release 3.4.2
minor fixes for handling sparse submatrix views
minor speedups for sparse matrices
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
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()
NEWS file converted to Rd format
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)
Corrected summary method to deal with the no intercept case when using a formula; also display residual summary() statistics
Expanded unit tests for fastLm
Upgraded to Armadillo release 3.2.4
workaround for a regression (bug) in GCC 4.7.0 and 4.7.1
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
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
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)
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
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
New example script fastLm
Upgraded to Armadillo release 3.0.2
fixes for handling diagonal matrices
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
Upgraded to Armadillo release 3.0.1
fixes for compilation errors
fixes for potential aliasing issues
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)
Upgraded to Armadillo release 2.99.4 "Antarctic Chilli Ranch (Beta 4)"
fixes for handling expressions with fixed size matrices
Upgraded to Armadillo release 2.99.3 "Antarctic Chilli Ranch (Beta 3)"
faster repmat()
workarounds for braindead compilers (eg. Visual Studio)
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)
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()
Upgraded to Armadillo release 2.4.4
fixes for qr() and syl()
more portable wall_clock class
faster relational operators on submatrices
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
Upgraded to Armadillo release 2.4.2
clarified documentation for .reshape()
fix for handling of empty matrices by .resize()
Upgraded to Armadillo release 2.4.1
added .resize()
fix for vector initialisation
Upgraded to Armadillo test release 2.4.0 "Loco Lounge Lizard"
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
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
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
Upgraded to Armadillo release 2.2.3
Release fixes a speed issue in the as_scalar() function.
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
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()
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()
Upgraded to Armadillo 2.0.1 which fixes two minor compilation issues
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()
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
fastLmPure() now uses same argument order as R's lm.fit()
Export and document S3 methods in NAMESPACE and manual page as such
Upgraded to Armadillo release 1.99.4 "v2.0 beta 4"
fixes for handling of tiny matrices
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
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)
Added a new subdirectory examples/ seeded with a nice Vector Autoregression simulation simulation example by Lance Bachmeier
Rewrote armadillo_version as to no longer require an instance of arma::arma_version, with tanks to Conrad for the suggestion
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
Upgraded to Armadillo version 1.1.92 "Jurassic Barbecue"
Bugfix in cor()
Automatic installation now requires CMake >= 2.6
Upgraded to Armadillo version 1.1.90 "Inside Job"
Added .min() & .max(), which can provide the extremum's location
More robust mean(), var(), stddev()
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()
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
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
fastLm code simplified further by instantiating the Armadillo matrix and vector directly from the SEXP coming from R
inst/doc/Makefile now respects $R_HOME environment variable
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
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
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
New unexported R function SHLIB, a small wrapper around R CMD SHLIB, which can be used as Rscript -e "RcppArmadillo:::SHLIB('foo.cpp')"
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.
R/RcppArmadillo.package.skeleton.R: Updated to no longer rely on GNU make for builds of packages using RcppArmadillo
summary() for fastLm() objects now returns r.squared and adj.r.squared
Upgraded to Armadillo 0.9.92 "Wall Street Gangster":
Fixes for compilation issues under the Intel C++ compiler
Added matrix norms
Upgraded to Armadillo 0.9.90 "Water Dragon":
Added unsafe_col()
Speedups and bugfixes in lu()
Minimisation of pedantic compiler warnings
Switched NEWS and ChangeLog between inst/ and the top-level directory so that NEWS (this file) gets installed with the package
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
Upgraded to Armadillo 0.9.70 "Subtropical Winter Safari"
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.
Upgraded to Armadillo 0.9.60 "Killer Bush Turkey"
Upgraded to Armadillo 0.9.52 'Monkey Wrench'
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
Better configuration to detect suncc (which does not have std::isfinite)
Added RcppArmadillo:::CxxFlags for cases where RcppArmadillo is not used via a package
Upgraded to Armadillo 0.9.10 'Chilli Espresso'
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
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
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.
Bug-fix release permitting compilation on Windows
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
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
New R function RcppArmadillo.package.skeleton, similar to Rcpp::Rcpp.package.skeleton, but targetting use of RcppArmadillo
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
support for Rcpp implicit wrap of these types : Mat<T>, Col<T>, Row<T>, Cube<T> where T is one of : int, unsigned int, double, float
support for Rcpp implicit as of these types : Mat<T>, Col<T>, Row<T> where R is one of : int, unsigned int, double, float