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
.
This exercise is part of the course
Optimizing R Code with Rcpp
Exercise instructions
- Complete the definition of
square()
so that it accepts and returns adouble
, … - that is equal to
x
timesx
. - Update the definition of
dist()
to usesquare()
. That is, to return the square root of the sum of square ofx
and the square ofy
.
Hands-on interactive exercise
Have a go at this exercise by completing this sample 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(___ + ___);
}