12#include <boost/numeric/odeint/algebra/operations_dispatcher.hpp>
42 template<
typename... Fac>
52 template<
typename... Ts, std::size_t... Is>
53 inline auto helper(std::index_sequence<Is...>,
const Ts &... as)
noexcept
56 return ((std::get<Is + 1>(
m_alpha) * as) + ...);
61 requires(std::is_same_v<T1, T2> && std::conjunction_v<std::is_same<Tangent<T1>, Ts>...>)
62 inline void operator()(T1 & y,
const T2 & x,
const Ts &... as)
noexcept
64 y = smooth::rplus(x,
helper(std::make_index_sequence<
sizeof...(Ts)>(), as...));
73 template<
typename Fac1,
typename Fac2 = Fac1>
76 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2>
79 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3>
82 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4>
85 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5>
88 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6>
91 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7>
94 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7,
typename Fac9 = Fac8>
97 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7,
typename Fac9 = Fac8,
typename Fac10 = Fac9>
100 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7,
typename Fac9 = Fac8,
typename Fac10 = Fac9,
typename Fac11 = Fac10>
101 using scale_sum11 =
scale_sum<Fac1, Fac2, Fac3, Fac4, Fac5, Fac6, Fac7, Fac8, Fac9, Fac10, Fac11>;
103 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7,
typename Fac9 = Fac8,
typename Fac10 = Fac9,
typename Fac11 = Fac10,
typename Fac12 = Fac11>
104 using scale_sum12 =
scale_sum<Fac1, Fac2, Fac3, Fac4, Fac5, Fac6, Fac7, Fac8, Fac9, Fac10, Fac11, Fac12>;
106 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7,
typename Fac9 = Fac8,
typename Fac10 = Fac9,
typename Fac11 = Fac10,
typename Fac12 = Fac11,
typename Fac13 = Fac12>
107 using scale_sum13 =
scale_sum<Fac1, Fac2, Fac3, Fac4, Fac5, Fac6, Fac7, Fac8, Fac9, Fac10, Fac11, Fac12, Fac13>;
109 template<
typename Fac1,
typename Fac2 = Fac1,
typename Fac3 = Fac2,
typename Fac4 = Fac3,
typename Fac5 = Fac4,
typename Fac6 = Fac5,
typename Fac7 = Fac6,
typename Fac8 = Fac7,
typename Fac9 = Fac8,
typename Fac10 = Fac9,
typename Fac11 = Fac10,
typename Fac12 = Fac11,
typename Fac13 = Fac12,
typename Fac14 = Fac13>
110 using scale_sum14 =
scale_sum<Fac1, Fac2, Fac3, Fac4, Fac5, Fac6, Fac7, Fac8, Fac9, Fac10, Fac11, Fac12, Fac13, Fac14>;
123template<smooth::Manifold G>
124struct boost::numeric::odeint::operations_dispatcher_sfinae<G, void>
126 using operations_type = ::smooth::detail::BoostOdeintOps;
Class-external Manifold interface defined through the traits::man trait class.
Meta header to include all Manifold concept model specifications.
Variadic scale_sum implementation.
auto helper(std::index_sequence< Is... >, const Ts &... as) noexcept
Helper for scaled addition operation.
const std::tuple< Fac... > m_alpha
Storage for scale sum weights.
void result_type
Required typedef.
scale_sum(Fac... alpha) noexcept
Constructor for scale sum.
boost::odeint Stepper operations for Manifold types.