9#ifndef DRYCHEM_COMMON_UTILITIES_INCLUDE_COMMON_UTILS_MATH_CALCULUS_DIFFERENTIATION_FORWARDDIFFERENCEMETHOD_HPP
10#define DRYCHEM_COMMON_UTILITIES_INCLUDE_COMMON_UTILS_MATH_CALCULUS_DIFFERENTIATION_FORWARDDIFFERENCEMETHOD_HPP
41 template<
typename IteratorX,
typename IteratorY = IteratorX,
42 typename Tx =
typename std::iterator_traits<IteratorX>::value_type,
43 typename Ty =
typename std::iterator_traits<IteratorY>::value_type,
44 typename = std::enable_if_t<std::conjunction_v<std::is_default_constructible<Tx>, std::is_default_constructible<Ty>>>>
47 using Ty_x =
decltype(*y_begin / *x_begin);
49 std::ptrdiff_t x_size {x_end - x_begin}, y_size {y_end - y_begin};
54 std::vector<Ty_x> dy_dx;
56 IteratorX x_iter {x_begin};
57 IteratorY y_iter {y_begin};
59 while (x_iter != x_end - 1)
61 dy_dx.push_back((*(y_iter + 1) - *y_iter) / (*(x_iter + 1) - *x_iter));
73 template<
typename ContainerX,
typename ContainerY = ContainerX,
74 typename = std::enable_if_t<std::conjunction_v<std::is_default_constructible<typename ContainerX::value_type>,
75 std::is_default_constructible<typename ContainerY::value_type>>>>
Definition backwardsDifferenceMethod.hpp:20
constexpr auto forwardDifferenceMethod(IteratorX x_begin, IteratorX x_end, IteratorY y_begin, IteratorY y_end)
Definition forwardDifferenceMethod.hpp:45