1#ifndef STAN_MATH_REV_FUN_ACCUMULATOR_HPP
2#define STAN_MATH_REV_FUN_ACCUMULATOR_HPP
27 static constexpr int max_size_ = 128;
28 std::vector<var, arena_allocator<var>>
buf_;
34 if (
buf_.size() == max_size_) {
57 template <
typename S,
typename = require_stan_scalar_t<S>>
58 inline void add(S x) {
70 template <
typename S, require_matrix_t<S>* =
nullptr>
71 inline void add(
const S& m) {
82 template <
typename S, require_std_vector_vt<is_stan_scalar, S>* =
nullptr>
83 inline void add(
const S& xs) {
97 inline void add(
const S& xs) {
99 for (
const auto& i : xs) {
110 template <
typename S,
122 template <
typename S,
124 inline void add(
const S& xs) {
void check_size()
Checks if the internal buffer is full and if so reduces it to 1 element.
void add(S x)
Add the specified arithmetic type value to the buffer after static casting it to the class type T.
accumulator()
Constructor.
std::vector< var, arena_allocator< var > > buf_
void add(const S &m)
Add each entry in the specified matrix, vector, or row vector of values to the buffer.
void add(const var_value< S > &xs)
Sum each entry and then push to the buffer.
void add(const S &xs)
Add each entry in the specified std vector of values to the buffer.
var sum() const
Return the sum of the accumulated values.
void add(S x)
Add the specified arithmetic type value to the buffer after static casting it to the class type T.
Class to accumulate values and eventually return their sum.
require_all_t< is_kernel_expression_and_not_scalar< Types >... > require_all_kernel_expressions_and_none_scalar_t
Enables a template if all given types are non-scalar types that are a valid kernel generator expressi...
require_t< container_type_check_base< is_std_vector, value_type_t, TypeCheck, Check... > > require_std_vector_vt
Require type satisfies is_std_vector.
require_t< is_var< std::decay_t< T > > > require_var_t
Require type satisfies is_var.
auto sum(const std::vector< T > &m)
Return the sum of the entries of the specified standard vector.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...