CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Complétez la définition de square() pour qu'elle accepte et retourne un double, …
  • qui est égal à x multiplié par x.
  • Mettez à jour la définition de dist() pour utiliser square(). Autrement dit, retournez la racine carrée de la somme du carré de x et du carré de y.

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(___ + ___);
}
Modifier et exécuter le code