Funciones exportadas y no exportadas
Las funciones decoradas con el comentario especial [[Rcpp::export]] están disponibles en la consola de R. Sin embargo, normalmente no querrás exportar todas las funciones a R. En su lugar, algunas funciones pueden mantenerse internas en C++. Suelen ser funciones de cálculo de bajo nivel o utilidades.
Recuerda la función que calcula la distancia desde un punto en el espacio 2D al origen:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Aquí, vas a actualizar el código para que la función dist (que sí se exporta) llame a una función no exportada square que simplemente eleva al cuadrado un double.
Este ejercicio forma parte del curso
Optimizar código de R con Rcpp
Instrucciones del ejercicio
- Completa la definición de
square()para que acepte y devuelva undouble, … - que sea igual a
xporx. - Actualiza la definición de
dist()para que usesquare(). Es decir, que devuelva la raíz cuadrada de la suma del cuadrado dexy el cuadrado dey.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
#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(___ + ___);
}