Funções exportadas e não exportadas
Funções decoradas com o comentário especial [[Rcpp::export]] ficam disponíveis no console do R. No entanto, você normalmente não quer exportar toda função para o R. Em vez disso, algumas funções podem permanecer internas ao C++. Geralmente, são funções de cálculo de baixo nível ou utilitárias.
Relembre a função que calcula a distância de um ponto no espaço 2D até a origem:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Aqui, você vai atualizar o código para que a função dist (que é exportada) chame uma função não exportada square que apenas eleva um double ao quadrado.
Este exercicio faz parte do curso
Otimizando código R com Rcpp
Instruções do exercicio
- Complete a definição de
square()para que ela aceite e retorne umdouble, … - que seja igual a
xvezesx. - Atualize a definição de
dist()para usarsquare(). Ou seja, para retornar a raiz quadrada da soma do quadrado dexcom o quadrado dey.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
#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(___ + ___);
}