Exported and unexported functions
Functions that are decorated with the [[Rcpp::export]] special comment are made available to the R console. However, you typically don't want to export every function to R. Instead, some functions can be kept internal to C++. These are often lower-level calculation functions or utility functions.
Recall the function that calculates distance from a point in the 2d space to the origin:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Here, you'll update the code so that the dist function (that is exported) calls an unexported square function that just squares a double.
Cet exercice fait partie du cours
Optimizing R Code with Rcpp
Instructions
- Complete the definition of
square()so that it accepts and returns adouble, … - that is equal to
xtimesx. - Update the definition of
dist()to usesquare(). That is, to return the square root of the sum of square ofxand the square ofy.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
#include
using namespace Rcpp;
// Make square() accept and return a double
___ square(___ x) {
// Return x times x
return ___ ;
}
// [[Rcpp::export]]
double dist(double x, double y) {
// Change this to use square()
return sqrt(___ + ___);
}