Hi, I think you can/should use std::complex, see for example the types used in
https://github.com/baptiste/rcppfaddeeva/blob/master/src/callFaddeeva.cpp In general I prefer to work with RcppArmadillo for numerical (including complex) computations, its syntax closely follows R and Matlab. See for instance https://github.com/baptiste/cda/blob/master/src/cda.cpp https://github.com/baptiste/planar/blob/master/src/fresnel.cpp for some examples. HTH, baptiste On 22 February 2017 at 04:46, Martin S Ridout <[email protected]> wrote: > Apologies if this is a naive question - I'm a beginner with Rcpp. I did > see some earlier discussion on similar topic, but I don't think it answered > my questions. > > I am trying (on Windows) to speed up a function currently written in R. > This works very well for real-valued arguments of the function. But it > needs to work for complex arguments as well. Here is a stripped down (but > still non-working) example of what I am trying to do > > cppFunction(' > ComplexVector test(ComplexVector s, ComplexVector lambda) { > > int n = s.size(); > int m = lambda.size(); > ComplexVector out(n); > > for (int i=0; i < n; ++i) { > for (int j=0; j < m; ++j) { > out[i] = out[i] - log(s[i] + 1/lambda[j]) / 2; > } > } > return out; > } > ') > > I have (at least) 2 problems > > i) Are the logarithm and exponential functions implemented for complex > arguments? If not is there a work-around? > > ii) What is the best way to specify constants like 1 and 2 as complex > constants? This must be easy, but everything I tried so far gives an > error (except passing them into the function via an extra ComplexVector > argument, but there must be a better way). > > Many thanks for any help, > Martin Ridout > > > > _______________________________________________ > Rcpp-devel mailing list > [email protected] > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >
_______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
