Fonctions exportées et non exportées
Les fonctions annotées avec le commentaire spécial [[Rcpp::export]] sont rendues disponibles dans la console R. Cependant, vous ne voudrez généralement pas exporter toutes les fonctions vers R. Certaines fonctions peuvent plutôt rester internes à 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 mettre à jour le code pour que la fonction dist (qui est exportée) appelle une fonction square non exportée qui met simplement au carré un double.
Cette activité fait partie du cours
Optimiser le code R avec Rcpp
Instructions de l’exercice
- Complétez la définition de
square()pour qu'elle accepte et retourne undouble, … - qui est égal à
xmultiplié parx. - Mettez à jour la définition de
dist()pour utilisersquare(). Autrement dit, retournez la racine carrée de la somme du carré dexet du carré dey.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
#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(___ + ___);
}