70 std::optional<
decltype(*x_begin * *y_begin)> initialValue = std::nullopt)
72 using Txy =
decltype(*x_begin * *y_begin);
74 std::ptrdiff_t x_size {x_end - x_begin}, y_size {y_end - y_begin};
80 std::vector<Txy> y_cumulative;
82 IteratorX x_iter = x_begin;
83 IteratorY y_iter = y_begin;
86 y_cumulative.push_back(init);
88 for (std::size_t i {}; i < static_cast<std::size_t>(x_size - 1); ++i, ++x_iter, ++y_iter)
90 Txy temp =
trapz(*x_iter, *(x_iter + 1), *y_iter, *(y_iter + 1));
95 y_cumulative.push_back(temp);
97 y_cumulative.push_back(y_cumulative[i - 1] + temp);
100 y_cumulative.push_back(y_cumulative[i] + temp);
104 if (initialValue && initialValue.value() != init)
105 y_cumulative[0] = initialValue.value();
constexpr auto trapz(Tx x1, Tx x2, Ty y1, Ty y2) noexcept
Definition integration.hpp:39
constexpr auto cumulativeTrapzIntegration(IteratorX x_begin, IteratorX x_end, IteratorY y_begin, IteratorY y_end, std::optional< decltype(*x_begin **y_begin)> initialValue=std::nullopt)
Definition integration.hpp:69