Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Dokonči definici funkce square() tak, aby přijímala i vracela hodnotu typu double, …
  • která se rovná x krát x.
  • Aktualizuj definici funkce dist() tak, aby používala square() – tedy aby vracela odmocninu součtu druhé mocniny x a druhé mocniny y.

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(___ + ___);
}
Upravit a spustit kód