[Rcppdevel] Multiplication of ComplexVector?
Dirk Eddelbuettel
edd at debian.org
Tue Aug 17 02:43:17 CEST 2010
Hi Christian,
Thanks for your interest in Rcpp, and for posting here.
On 16 August 2010 at 17:19, Christian Gunning wrote:
 Dear list,

 I'm trying to use the ComplexVector class, and I'm having difficulty
 with multiplication. I sugar multiplication, elementbyelement
 multiplication (no * operator for either), and using temporary
 Rcomplex variables (don't really understand what I'm doing here).
Well, NumericVector et al aren't really made for all possible math ops done
on vectors, real or complex. They are first and foremost storage types. But
for the math we do have Armadillo and RcppArmadillo. So in the short run, I
would suggest the following twostep procedure:
i) have a good look at Armadillo (http://arma.sf.net) and use the cx_mat
or cx_vec types for mulitplication; write a small test program to see
that everything works
ii) use RcppArmadillo to from R via Rcpp / RcppArmadillo to this
functionality
 I was able to successfully import get("*") as an Rcpp::Function and do
 the multiplication through R. Is this the best option for now?
I am sure we can do better than this but I am not sure all pieces are in
place just yet.
Cheers, Dirk
 Thanks,
 Christian Gunning
 University of New Mexico

 // doesn't work
 SEXP rcpp_hello_world(SEXP i, SEXP ii){
 using namespace Rcpp ;

 ComplexVector y1(i), y2(ii);
 int n(y1.size()), j;
 ComplexVector y3(n), y4(n);
 y3 = y1 * y2; // no operator
 for (j = 0; j++; j<n) {
 y4[j] = y1[j] + y2[j]; // no operator
 }
 List z = List::create( y1, y2, y3) ;
 return z ;
 }

 // does work, doing multiplication in R
 SEXP mymult(SEXP input1, SEXP input2) {
 Rcpp::Environment base("package:base");
 Rcpp::Function funbase = base["get"];
 SEXP funbase1 = funbase("*");
 Rcpp::Function funmult(funbase1);
 Rcpp::ComplexVector xxa = funmult(input1, input2);
 return xxa;
 }

 SEXP rcpp_hello_world(SEXP i, SEXP ii){
 using namespace Rcpp ;
 ComplexVector y3( mymult(i, ii) );
 return y3 ;
 }
 _______________________________________________
 Rcppdevel mailing list
 Rcppdevel at lists.rforge.rproject.org
 https://lists.rforge.rproject.org/cgibin/mailman/listinfo/rcppdevel

Dirk Eddelbuettel  edd at debian.org  http://dirk.eddelbuettel.com
More information about the Rcppdevel
mailing list