Skip to content

Commit e5584aa

Browse files
committed
Update var.h
Make this safer for IntegerVector
1 parent 9f090ee commit e5584aa

File tree

1 file changed

+6
-4
lines changed
  • inst/include/Rcpp/sugar/functions

1 file changed

+6
-4
lines changed

inst/include/Rcpp/sugar/functions/var.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ class Var : public Lazy< double , Var<RTYPE,NA,T> > {
3434
Var( const VEC_TYPE& object_ ) : object(object_){}
3535

3636
double get() const{
37-
const double
38-
average = mean(object).get(),
39-
sum_squared_deviations = sum( pow(object - average, 2.0) ).get();
40-
return sum_squared_deviations / (object.size() - 1);
37+
const double average = mean(object).get();
38+
const R_xlen_t sample_size = object.size();
39+
double sum_squared_deviations = 0.0;
40+
for (R_xlen_t i = 0; i != sample_size; ++i)
41+
sum_squared_deviations += std::pow(object[i] - average, 2.0);
42+
return sum_squared_deviations / (sample_size - 1);
4143
}
4244

4345
private:

0 commit comments

Comments
 (0)