Get startedGet started for free

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

View Course

Exercise instructions

  • Complete the definition of square() so that it accepts and returns a double, …
  • that is equal to x times x.
  • Update the definition of dist() to use square(). That is, to return the square root of the sum of square of x and the square of y.

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(___ + ___);
}
Edit and Run Code