Fonctions exportées et non exportées
Les fonctions annotées avec le commentaire spécial [[Rcpp::export]] sont disponibles dans la console R. Toutefois, vous ne souhaitez généralement pas tout exporter vers R. Certaines fonctions peuvent rester internes au C++. Il s’agit souvent de fonctions de calcul de bas niveau ou d’utilitaires.
Rappelez-vous la fonction qui calcule la distance d’un point dans l’espace 2D à l’origine :
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Ici, vous allez modifier le code pour que la fonction dist (qui est exportée) appelle une fonction non exportée square qui met simplement au carré un double.
Cet exercice fait partie du cours
Optimiser du code R avec Rcpp
Instructions
- Complétez la définition de
square()pour qu’elle accepte et retourne undouble, … - égal à
xmultiplié parx. - Mettez à jour la définition de
dist()pour utilisersquare(). Autrement dit, retourner la racine carrée de la somme du carré dexet du carré dey.
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(___ + ___);
}