RcppArmadillo 0.3.930.1

December 10, 2013

(This article was first published on Thinking inside the box , and kindly contributed to R-bloggers)

A new Armadillo release 3.930 came
out a few days ago, with a very nice set of changes (see below). I rolled
this into RcppArmadillo
0.3.930.0. However, one of these changes revealed that R shipped only the standard SVD for
complex-valued matrices, and not the more performant divide-and-conquer
approach. So in R builds using the default built-in Lapack, at least one
CRAN package no longer built.

After some back and forth, Conrad
put some branching in the library to fall back to the standard SVD, and I
added a built-time configuration test for an appropriate preprocessor
directive used by the fallback code. This is now on
which is now on CRAN
and in Debian as
0.3.930.1, and Conrad will probably update the
Armadillo page as well (though the
fix is only needed with R’s builtin Rlapack). Also of note is that R Core
already added the missing Fortran routine zgesdd to R 3.1.0 (aka
“R-devel”) so this issue goes away with the next release. Also of note, I
wrote up a short Rcpp Gallery post
illustrating the performance gains available from divide-and-conquer SVD.

The complete list of changes is below.

Changes in RcppArmadillo version 0.3.930.1 (2013-12-09)

  • 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

Changes in RcppArmadillo version 0.3.930.0 (2013-12-06)

  • 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

Courtesy of CRANberries, there
is also a diffstat report for the
most recent release
As always, more detailed information is on the RcppArmadillo page.
Questions, comments etc should go to the
rcpp-devel mailing list
off the R-Forge page.

This post by Dirk Eddelbuettel
originated on his Thinking inside the box blog.
Please report excessive re-aggregation in third-party for-profit settings.

To leave a comment for the author, please follow the link and comment on his blog: Thinking inside the box .

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.