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 + 1};
57 IteratorY y_iter {y_begin + 1};
59 while (x_iter != x_end)
61 dy_dx.push_back((*y_iter - *(y_iter - 1)) / (*x_iter - *(x_iter - 1)));
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>>>>
constexpr auto backwardsDifferenceMethod(IteratorX x_begin, IteratorX x_end, IteratorY y_begin, IteratorY y_end)
Definition backwardsDifferenceMethod.hpp:45