I've never used C++ before, so for this project I think I will stick
with just using the BLAS and LAPACK routines directly.  Another issue
is that I will need to do some sparse matrix computations, for which I
am planning to use CSPARSE, at least to begin with.  I am interested
by RcppArmadillo, and would consider it for future projects.  If you
don't mind, what in your opinion are the major pros and cons of an
RcppArmadillo solution compared to simply using the BLAS or LAPACK
routines through the .C interface?

-Jason

On Sun, Feb 20, 2011 at 8:11 AM, Dirk Eddelbuettel <e...@debian.org> wrote:
>
> On 20 February 2011 at 09:50, Dirk Eddelbuettel wrote:
> | There is of course merit in working through the barebones API but in case 
> you
> | would consider a higher-level alternative, consider these few lines based on
> | RcppArmadillo (which end up calling dgemm() for you via R's linkage to the 
> BLAS)
>
> PS I always forget that we have direct support in Rcpp::as<> for Armadillo
> matrices. The examples reduces to three lines in C++, and you never need to
> worry about row or column dimension, or memory allocation or deallocation:
>
>  R> suppressMessages(library(inline))
>  R> txt <- '
>  +    arma::mat Am = Rcpp::as< arma::mat >(A);
>  +    arma::mat Bm = Rcpp::as< arma::mat >(B);
>  +    return Rcpp::wrap( Am * Bm );
>  +    '
>  R> mmult <- cxxfunction(signature(A="numeric", B="numeric"),
>  +                      body=txt,
>  +                      plugin="RcppArmadillo")
>  R> A <- matrix(1:9, 3, 3)
>  R> B <- matrix(9:1, 3, 3)
>  R> C <- mmult(A, B)
>  R> print(C)
>       [,1] [,2] [,3]
>  [1,]   90   54   18
>  [2,]  114   69   24
>  [3,]  138   84   30
>  R>
>
> Matrices A and B from directly initialise Armadillo matrices, and the result
> can be returned directly.
>
> Hth, Dirk
>
> --
> Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com
>

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to