[Rcpp-devel] A strange question while using Rcpp

Dirk Eddelbuettel edd at debian.org
Fri Jan 17 14:36:02 CET 2014


On 17 January 2014 at 20:51, 晔张 wrote:
| Dear all,
| 
| I have a strange question such that I can't conclude it in the title.
| I have write an function:
| //[[Rcpp::export]]
| double mydcov(NumericVector x, NumericVector y)

It would help us to see the function to have any guess at what may be wrong.
 
| This function is computing  ditance covariance. This function is OK. It give
| the right answer.
| I use this function to compute distance correltion. 
| 
| //[[Rcpp::export]]
| double mydcor(NumericVector x, NumericVector y)
| {
|     return mydcov(x,y)/sqrt(mydcov(x,x)*mydcov(y,y));
| }
| 
| Then, I compile the source code using sourceCpp.
| And then mydcor(x,y) give a wrong answer.
| 
| Here comes the strange part:
| In R, I run code as follow
| 
| res1 <- mydcov(x,y)/sqrt(mydcov(x,x)*mydcov(y,y))
| 
| a <- mydcov(x,y)
| b <- mydcov(x,x)
| c <- mydcov(y,y)
| res2 <- a/sqrt(b*c)
| 
| and res2 is different from res1.(res2 is the right answer.)
| 
| And I have another test, rewriting the source code for mydcor():
| version1:
| //[[Rcpp::export]]
| double mydcor(NumericVector x, NumericVector y)
| {
|     double a = mydcov(x,y)
|     double b = mydcov(x,x);
|     double c = mydcov(y,y);
|     return (a/sqrt(b*c));
| }
| 
| version2:
| //[[Rcpp::export]]
| double mydcor(NumericVector x, NumericVector y)
| {
|     double a = mydcov(x,y)
|     Rcout<<a<<"\n";
|     double b = mydcov(x,x);
|     Rcout<<b<<"\n";
|     double c = mydcov(y,y);
|     Rcout<<c<<"\n"
|     return (a/sqrt(b*c));
| }
| This time, version2 make a right answer.
| It's too weird. I havn't meet such situation before.

I am not sure we are in a position to help you here.

Regards, Dirk

| 
| Happy Lunar New Year (the most important festival in China), and Thanks in
| advance.
| 
| Best regards
| ZhangYet
| 
| ----------------------------------------------------------------------
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list