35 template<
typename... X>
38 static_assert(
sizeof...(X) > 0,
"tube_cart_prod requires at least one tube");
40 ((s += x.size()), ...);
42 const auto& x0 = std::get<0>(std::forward_as_tuple(x...));
43 auto tdomain = x0.tdomain();
44 assert_release(((x.tdomain() == tdomain) && ...));
47 for(
auto it = tdomain->begin() ; it != tdomain->end() ; it++)
48 v.
slice(it)->codomain() = cart_prod(x.slice(it)->codomain()...);
Tube represented over a sliced temporal domain.
Definition codac2_SlicedTube.h:38
std::shared_ptr< Slice< T > > slice(const std::list< TSlice >::iterator &it)
Returns the slice attached to a temporal iterator.
Definition codac2_SlicedTube.h:249
Definition codac2_OctaSym.h:21
Eigen::Matrix< Interval,-1, 1 > IntervalVector
Alias for a dynamic-size column vector of intervals.
Definition codac2_IntervalVector.h:25
SlicedTube< IntervalVector > tube_cart_prod(const X &... x)
Computes the Cartesian product of several sliced tubes.
Definition codac2_tube_cart_prod.h:36