22 #ifndef EDSP_STATISTICAL_GEOMETRIC_MEAN_H 23 #define EDSP_STATISTICAL_GEOMETRIC_MEAN_H 26 #include <edsp/meta/iterator.hpp> 29 namespace edsp {
namespace statistics {
43 template <
typename ForwardIt>
44 constexpr meta::value_type_t<ForwardIt>
geometric_mean(ForwardIt first, ForwardIt last) {
45 using input_t = meta::value_type_t<ForwardIt>;
46 const auto acc = std::accumulate(first, last, static_cast<input_t>(1), std::multiplies<input_t>());
47 const auto sz =
static_cast<input_t
>(
std::distance(first, last));
53 #endif // EDSP_STATISTICAL_GEOMETRIC_MEAN_H constexpr meta::value_type_t< ForwardIt > geometric_mean(ForwardIt first, ForwardIt last)
Computes the geometric mean of the range [first, last)
Definition: geometric_mean.hpp:44
constexpr T inv(T x)
Computes the inverse value of the input number.
Definition: numeric.hpp:208
constexpr T distance(T x, T y) noexcept
Computes the distance between x and y.
Definition: numeric.hpp:328
Definition: amplifier.hpp:29