# Accumulating functions¶

xtensor provides the following accumulating functions for xexpressions:

Defined in xtensor/xmath.hpp

template<class T = void, class E>
auto xt::cumsum(E &&e)
template<class T = void, class E>
auto xt::cumsum(E &&e, std::ptrdiff_t axis)

Cumulative sum.

Returns the accumulated sum for the elements over given axis (or flattened).

Return
Parameters
• e: an xexpression

• axis: the axes along which the cumulative sum is computed (optional)

Template Parameters
• T: the value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.

template<class T = void, class E>
auto xt::cumprod(E &&e)
template<class T = void, class E>
auto xt::cumprod(E &&e, std::ptrdiff_t axis)

Cumulative product.

Returns the accumulated product for the elements over given axis (or flattened).

Return
Parameters
• e: an xexpression

• axis: the axes along which the cumulative product is computed (optional)

Template Parameters
• T: the value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.