Funzioni esportate e non esportate
Le funzioni contrassegnate con il commento speciale [[Rcpp::export]] vengono rese disponibili nella console R. Tuttavia, in genere non vuoi esportare ogni funzione in R. Alcune funzioni, invece, possono restare interne a C++. Spesso si tratta di funzioni di calcolo di livello più basso o di utilità.
Ricorda la funzione che calcola la distanza dall’origine di un punto nello spazio 2D:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Qui aggiornerai il codice in modo che la funzione dist (che è esportata) richiami una funzione non esportata square che si limita a elevare al quadrato un double.
Questo esercizio fa parte del corso
Ottimizzare il codice R con Rcpp
Istruzioni dell'esercizio
- Completa la definizione di
square()in modo che accetti e restituisca undouble, … - che sia uguale a
xperx. - Aggiorna la definizione di
dist()per usaresquare(). Cioè, per restituire la radice quadrata della somma del quadrato dixe del quadrato diy.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
#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(___ + ___);
}