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 pratico interattivo
Prova a risolvere questo esercizio completando il 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(___ + ___);
}