3#ifndef pRC_CORE_TENSOR_TENSOR_H
4#define pRC_CORE_TENSOR_TENSOR_H
21 template<
class T,
Size... Ns>
22 requires(IsValue<T> || IsComplex<T> || IsBool<T>) &&
39 static constexpr auto size()
49 template<
class X, IsConvertible<Index>... Is>
75 *
this = forward<X>(other);
82 view(*
this) = forward<X>(rhs);
86 template<IsConvertible<Index>... Is>
88 constexpr decltype(
auto)
operator()(Is
const... indices) &&
90 return move(mData)(indices...);
93 template<IsConvertible<Index>... Is>
95 constexpr decltype(
auto)
operator()(Is
const... indices)
const &&
97 return move(mData)(indices...);
100 template<IsConvertible<Index>... Is>
102 constexpr decltype(
auto)
operator()(Is
const... indices) &
104 return mData(indices...);
107 template<IsConvertible<Index>... Is>
109 constexpr decltype(
auto)
operator()(Is
const... indices)
const &
111 return mData(indices...);
114 constexpr decltype(
auto)
operator()(
Subscripts const &subscripts) &&
116 return move(mData)(subscripts);
119 constexpr decltype(
auto)
operator()(
122 return move(mData)(subscripts);
125 constexpr decltype(
auto)
operator()(
Subscripts const &subscripts) &
127 return mData(subscripts);
130 constexpr decltype(
auto)
operator()(
133 return mData(subscripts);
136 constexpr decltype(
auto)
operator[](
Index const index) &&
138 return move(mData)[index];
141 constexpr decltype(
auto)
operator[](
Index const index)
const &&
143 return move(mData)[index];
146 constexpr decltype(
auto)
operator[](
Index const index) &
151 constexpr decltype(
auto)
operator[](
Index const index)
const &
160 return *
this = *
this + forward<X>(rhs);
167 return *
this = *
this - forward<X>(rhs);
174 view(*this).applyOnTheLeft(forward<X>(lhs));
182 view(*this).applyOnTheRight(forward<X>(rhs));
190 view(*
this) *= forward<X>(rhs);
198 return *
this = *
this / forward<X>(rhs);
201 explicit constexpr operator T() const
207 explicit constexpr operator Bool() const
219 template<class F, class
T,
Size... Ns>
Definition sequence.hpp:29
static constexpr Size Dimension
Definition sequence.hpp:47
static constexpr auto size()
Definition sequence.hpp:69
Definition subscripts.hpp:21
pRC::Subscripts< Ns... > Subscripts
Definition tensor.hpp:35
constexpr Tensor(Tensor const &)=default
static constexpr auto size()
Definition tensor.hpp:39
constexpr auto & operator+=(X &&rhs) &
Definition tensor.hpp:158
constexpr auto & operator/=(X &&rhs) &
Definition tensor.hpp:196
constexpr Tensor & operator=(Tensor const &) &=default
static constexpr auto Single(X &&value, Is const ... indices)
Definition tensor.hpp:51
static constexpr auto size(Index const dimension)
Definition tensor.hpp:44
constexpr decltype(auto) operator()(Is const ... indices) &&
Definition tensor.hpp:88
constexpr auto & operator*=(X &&rhs) &
Definition tensor.hpp:188
constexpr auto & applyOnTheRight(X &&rhs) &
Definition tensor.hpp:180
constexpr Tensor(Tensor &&)=default
constexpr Tensor()=default
constexpr auto & operator=(X &&rhs) &
Definition tensor.hpp:80
constexpr auto & operator-=(X &&rhs) &
Definition tensor.hpp:165
constexpr auto & applyOnTheLeft(X &&lhs) &
Definition tensor.hpp:172
constexpr Tensor & operator=(Tensor &&) &=default
static constexpr auto Dimension
Definition tensor.hpp:37
static constexpr auto Single(X &&value, Subscripts const &subscripts)
Definition tensor.hpp:58
constexpr Tensor(X &&other)
Definition tensor.hpp:73
Definition concepts.hpp:40
Definition concepts.hpp:37
Definition concepts.hpp:31
Definition concepts.hpp:28
pRC::Float<> T
Definition externs_nonTT.hpp:1
int value
Definition gmock-actions_test.cc:1714
Definition cholesky.hpp:10
bool Bool
Definition basics.hpp:29
Size Index
Definition basics.hpp:32
std::size_t Size
Definition basics.hpp:31
static constexpr decltype(auto) view(X &&a)
Definition view.hpp:13
Conditional<((Ns *... *1) *sizeof(T) > cHugepageSizeByte), HeapArray< T, Ns... >, StackArray< T, Ns... > > Array
Definition declarations.hpp:21
static constexpr auto reduce(Sequence< T, I1, I2, Is... > const)
Definition sequence.hpp:458
#define BEGIN_IGNORE_DIAGNOSTIC_GCC(warning)
Definition pragma.hpp:42
#define END_IGNORE_DIAGNOSTIC_GCC
Definition pragma.hpp:43
Definition gtest_pred_impl_unittest.cc:54