#include using namespace Rcpp; // [[Rcpp::export]] NumericVector cumprodC(NumericVector x) { int n = x.size(); NumericVector out(n); out[0] = x[0]; for(int i = 1; i < n; ++i) { out[i] = out[i - 1] * x[i]; } return out; } // [[Rcpp::export]] NumericVector cumminC(NumericVector x) { int n = x.size(); NumericVector out(n); out[0] = x[0]; for(int i = 1; i < n; ++i) { out[i] = std::min(out[i-1] , x[i]) ; } return out; } /*** R x <- runif(10^6,0,2) # res <- microbenchmark::microbenchmark(cumprodC(x),cumprod(x)) res <- microbenchmark::microbenchmark(cumminC(x),cummin(x)) ggplot2::autoplot(res) */