Re: [Rcpp-devel] Rcpp sugar for double?
Eridk, See these Rcpp Gallery article from 2012 for worked examples: - http://gallery.rcpp.org/articles/using-rmath-functions/ has an example on pnorm that applies to your dnorm case - http://gallery.rcpp.org/articles/random-number-generation/ discusses the RNGs, but the d/p/q functions behave the same way. You can search at the Gallery too ... So we have all the scalar functions in the R:: namespace, sugar ones in Rcpp::, you can of course call the R functions as well (though I'd use R::( plus you get access from Armadillo, Boost, GSL, ... via other packages. But you need to look closely at the signatures of functions you are calling. Those expecting a 'double' cannot magically be resolved with a 'Rcpp::NumericVector' as those are different types. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org ___ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
Re: [Rcpp-devel] Rcpp sugar for double?
Hello, Functions in sugar only apply to vectors. For a single value, you’d have to use the dnorm function in the R:: namespace: // [[Rcpp::export]] double test6(double x){ double y = R::dnorm(x,5.0,2.0,true); return y; } > test6(3) [1] -2.112086 > dnorm(3, mean = 5, sd = 2, log = TRUE) [1] -2.112086 Romain > Le 22 févr. 2017 à 15:58, Eridk Poliruyt a écrit : > > Hi, I just tried to calculate the density of a normal variable using dnorm. I > found that if the input is of type NumericVector, then it was fine. But if > the input is of type double, it yielded error in compilation. For example: > > // [[Rcpp::export]] > NumericVector test5(NumericVector x) > { > NumericVector y = dnorm(x,5.0,2.0,true); > return(y); > } > > and > > // [[Rcpp::export]] > double test6(double x) > { > double y = dnorm(x,5.0,2.0,true); > return(y); > } > > May I ask why and how can I calculate this density (and call other common > functions like dbeta, dt, beta, gamma, lbeta, lgamma, etc...) on double input? > > Many thanks, > Eridk > ___ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel ___ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
[Rcpp-devel] Rcpp sugar for double?
Hi, I just tried to calculate the density of a normal variable using dnorm. I found that if the input is of type NumericVector, then it was fine. But if the input is of type double, it yielded error in compilation. For example: // [[Rcpp::export]] NumericVector test5(NumericVector x) { NumericVector y = dnorm(x,5.0,2.0,true); return(y); } and // [[Rcpp::export]] double test6(double x) { double y = dnorm(x,5.0,2.0,true); return(y); } May I ask why and how can I calculate this density (and call other common functions like dbeta, dt, beta, gamma, lbeta, lgamma, etc...) on double input? Many thanks, Eridk ___ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel