Существуют небольшие различия в результатах функции R sum и функции RcppArmadillo accu при задании того же ввода. Например, следующий код:
R:
vec <- runif(100, 0, 0.00001)
accu(vec)
sum(vec)
С++:
// [[Rcpp::depends("RcppArmadillo")]]
// [[Rcpp::export]]
double accu(arma::vec& obj)
{
return arma::accu(obj);
}
Дает результаты:
0.00047941851844312633 (С++)
0.00047941851844312628 (R)
В соответствии с http://keisan.casio.com/calculator истинный ответ:
4.79418518443126270948E-4
Эти небольшие различия складываются в моем алгоритме и существенно влияют на то, как он выполняется. Есть ли способ более точно суммировать векторы в С++? Или, по крайней мере, получить те же результаты, что и R, без вызова R-кода?