Exportované a neexportované funkce
Funkce označené speciálním komentářem [[Rcpp::export]] jsou zpřístupněny v R konzoli. Obvykle ale nechceš exportovat úplně každou funkci do R. Některé funkce mohou zůstat interní pro C++ – typicky jde o nízkoúrovňové výpočetní nebo pomocné funkce.
Vzpomeň si na funkci, která počítá vzdálenost bodu ve 2D prostoru od počátku souřadnic:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
V tomto cvičení upravíš kód tak, aby funkce dist (která je exportovaná) volala neexportovanou funkci square, jež jednoduše umocní hodnotu typu double na druhou.
Toto cvičení je součástí kurzu
Optimizing R Code with Rcpp
Pokyny k cvičení
- Dokonči definici funkce
square()tak, aby přijímala i vracela hodnotu typudouble, … - která se rovná
xkrátx. - Aktualizuj definici funkce
dist()tak, aby používalasquare()– tedy aby vracela odmocninu součtu druhé mocninyxa druhé mocninyy.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
#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(___ + ___);
}