3#ifndef pRC_CORE_TENSOR_VIEWS_REDUCE_H
4#define pRC_CORE_TENSOR_VIEWS_REDUCE_H
13 template<
class T,
class N,
class F,
class R,
class V>
16 template<
class T,
class N,
class F,
Index...
Rs,
class V>
18 :
public View<T, N, Reduce<T, N, F, Sequence<Index, Rs...>, V>>
26 template<
class X, If<IsSame<V, RemoveReference<X>>> = 0>
33 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
38 if constexpr(
typename Base::Dimension() == 0)
43 [
this, &c](
auto const i)
51 [
this, &c](
auto const...
loop)
53 c = F()(c, mA(
loop...));
70 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
75 if constexpr(
typename Base::Dimension() == 0)
80 [
this, &c](
auto const i)
88 [
this, &c](
auto const...
loop)
90 c = F()(c, mA(
loop...));
106 constexpr decltype(
auto)
operator()(
112 constexpr decltype(
auto)
operator()(
113 typename Base::Subscripts
const &
subscripts)
const
Definition sequence.hpp:56
Definition sequence.hpp:34
constexpr decltype(auto) operator()(Is const ... indices) const
Definition reduce.hpp:71
Reduce(X &&a)
Definition reduce.hpp:27
constexpr decltype(auto) operator()(Is const ... indices)
Definition reduce.hpp:34
Definition type_traits.hpp:32
pRC::Float<> T
Definition externs_nonTT.hpp:1
Definition diagonal.hpp:11
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Size Index
Definition type_traits.hpp:21
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71
static constexpr auto loop(F &&f, Xs &&...args)
Definition loop.hpp:22
static constexpr auto range(F &&f, Xs &&...args)
Definition range.hpp:16
static constexpr auto chip(Sequence< T, Is... > const)
Definition sequence.hpp:551
Definition type_traits.hpp:262