Re: [Rcpp-devel] Rcpp sugar for double?

2017-02-22 Thread Dirk Eddelbuettel

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?

2017-02-22 Thread Romain Francois
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?

2017-02-22 Thread Eridk Poliruyt
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