[Rcpp-devel] Rcpp sugar preserving attributes
Søren Højsgaard
sorenh at math.aau.dk
Sun Jan 4 22:27:55 CET 2015
Hi Dirk,
Cunning piece of code you pointed me to ('ag' seems like a good friend):
#define VECTORIZED_MATH_1(__NAME__,__SYMBOL__) \
namespace Rcpp{ \
template <bool NA, typename T> \
inline sugar::Vectorized<__SYMBOL__,NA,T> \
__NAME__( const VectorBase<REALSXP,NA,T>& t ){ \
return sugar::Vectorized<__SYMBOL__,NA,T>( t ) ; \
} \
inline sugar::Vectorized<__SYMBOL__,true,NumericVector> \
__NAME__( SEXP x){ return __NAME__( NumericVector( x ) ) ; } \
template <bool NA, typename T> \
inline sugar::Vectorized_INTSXP<__SYMBOL__,NA,T> \
__NAME__( const VectorBase<INTSXP,NA,T>& t ){ \
return sugar::Vectorized_INTSXP<__SYMBOL__,NA,T>( t ) ; \
} \
}
Thanks!
Søren
|-----Original Message-----
|From: Dirk Eddelbuettel [mailto:edd at debian.org]
|Sent: 4. januar 2015 21:51
|To: Søren Højsgaard
|Cc: Dirk Eddelbuettel; rcpp-devel at lists.r-forge.r-project.org
|Subject: RE: [Rcpp-devel] Rcpp sugar preserving attributes
|
|
|On 4 January 2015 at 19:58, Søren Højsgaard wrote:
|| Thanks! Probably a stupid question, but where are these functions
|| defined? In math.h I see
||
|| VECTORIZED_MATH_1(log,::log)
||
|| but - where to look for the implementation?
|
|You mean where VECTORIZED_MATH is defined?
|
|Let me introduce you to my friend 'ag' (with a top of the hat to Kevin
|...)
|
|edd at max:~/git/rcpp/inst/include/Rcpp/sugar(master)$ ag VECTORIZED_MATH
|block/Vectorized_Math.h
|83:#define VECTORIZED_MATH_1(__NAME__,__SYMBOL__)
|\
|
|functions/math.h
|25:VECTORIZED_MATH_1(exp,::exp)
|26:VECTORIZED_MATH_1(acos,::acos)
|27:VECTORIZED_MATH_1(asin,::asin)
|28:VECTORIZED_MATH_1(atan,::atan)
|29:VECTORIZED_MATH_1(ceil,::ceil)
|30:VECTORIZED_MATH_1(ceiling,::ceil)
|31:VECTORIZED_MATH_1(cos,::cos)
|32:VECTORIZED_MATH_1(cosh,::cosh)
|33:VECTORIZED_MATH_1(floor,::floor)
|34:VECTORIZED_MATH_1(log,::log)
|35:VECTORIZED_MATH_1(log10,::log10)
|36:VECTORIZED_MATH_1(sqrt,::sqrt)
|37:VECTORIZED_MATH_1(sin,::sin)
|38:VECTORIZED_MATH_1(sinh,::sinh)
|39:VECTORIZED_MATH_1(tan,::tan)
|40:VECTORIZED_MATH_1(tanh,::tanh)
|42:VECTORIZED_MATH_1(abs,::fabs)
|44:VECTORIZED_MATH_1(gamma , ::Rf_gammafn )
|45:VECTORIZED_MATH_1(lgamma , ::Rf_lgammafn )
|46:VECTORIZED_MATH_1(digamma , ::Rf_digamma )
|47:VECTORIZED_MATH_1(trigamma , ::Rf_trigamma )
|48:VECTORIZED_MATH_1(tetragamma , ::Rf_tetragamma )
|49:VECTORIZED_MATH_1(pentagamma , ::Rf_pentagamma )
|50:VECTORIZED_MATH_1(expm1 , ::expm1 )
|51:VECTORIZED_MATH_1(log1p , ::log1p )
|59:VECTORIZED_MATH_1(factorial , ::Rcpp::internal::factorial )
|60:VECTORIZED_MATH_1(lfactorial , ::Rcpp::internal::lfactorial )
|68:VECTORIZED_MATH_1(trunc, ::Rf_ftrunc) // truncates to
|zero (cf Writing R Extension, 6.7.3 Numerical Utilities)
|edd at max:~/git/rcpp/inst/include/Rcpp/sugar(master)$
|
|[ ag is "just" a version of 'grep -r' on steroids, which knows to skip
|.git, .svn etc pp -- recommended. In Debian/Ubuntu in package
|silversearcher-ag as there already was a package called ag. ]
|
|Dirk
|
|--
|http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
More information about the Rcpp-devel
mailing list