[Rcpp-devel] Multiplication of ComplexVector?

Christian Gunning xian at unm.edu
Tue Aug 17 02:19:43 CEST 2010


Dear list,

I'm trying to use the ComplexVector class, and I'm having difficulty
with multiplication. I sugar multiplication, element-by-element
multiplication (no * operator for either), and using temporary
Rcomplex variables (don't really understand what I'm doing here).

I was able to successfully import get("*") as an Rcpp::Function and do
the multiplication through R. Is this the best option for now?

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 ;
}


More information about the Rcpp-devel mailing list