3#ifndef pRC_CORE_TENSOR_TENSOR_H
4#define pRC_CORE_TENSOR_TENSOR_H
23 template<
class F,
class T,
Size...
Ns>
32 "Tensor<T, Ns..>: T has to be of type Value, Complex, or Bool.");
48 template<
class V, If<IsValue<V>> = 0>
64 template<
class E =
typename Sizes::IsLinearizable, If<E> = 0>
65 static constexpr auto size()
83 template<
class X, If<IsConstructible<T, X>> = 0>
116 return move(mData)(
indices...);
123 return move(mData)(
indices...);
145 constexpr decltype(
auto)
operator()(
156 constexpr decltype(
auto)
operator()(
162 constexpr decltype(
auto)
operator[](
Index const index) &&
164 return move(mData)[index];
167 constexpr decltype(
auto)
operator[](
Index const index)
const &&
169 return move(mData)[index];
172 constexpr decltype(
auto)
operator[](
Index const index) &
177 constexpr decltype(
auto)
operator[](
Index const index)
const &
182 template<
class X, If<IsInvocable<Add, Tensor &, X>> = 0>
188 template<
class X, If<IsInvocable<Sub, Tensor &, X>> = 0>
194 template<
class X, If<IsInvocable<Mul, X, Tensor &>> = 0>
197 view(*this).applyOnTheLeft(forward<X>(
lhs));
201 template<
class X, If<IsInvocable<Mul, Tensor &, X>> = 0>
204 view(*this).applyOnTheRight(forward<X>(
rhs));
208 template<
class X, If<IsInvocable<Mul, Tensor &, X>> = 0>
215 template<
class X, If<IsInvocable<Div, Tensor &, X>> = 0>
221 template<
class E = IsSatisfied<(Dimension() == 0)>, If<E> = 0>
222 explicit constexpr operator T()
const
Float< W > NonComplex
Definition float.hpp:45
pRC::Constant< Size, W > Width
Definition float.hpp:39
Float< W > Value
Definition float.hpp:31
Complex< Float< W > > Complexify
Definition float.hpp:44
False<> IsComplexified
Definition float.hpp:43
True<> Signed
Definition float.hpp:35
Definition sequence.hpp:56
static constexpr auto size()
Definition sequence.hpp:88
Constant< Size, sizeof...(Ns)> Dimension
Definition sequence.hpp:74
Constant< Bool, linearizable()> IsLinearizable
Definition sequence.hpp:75
Definition subscripts.hpp:20
Definition type_traits.hpp:32
constexpr decltype(auto) operator()(Is const ... indices) &&
Definition tensor.hpp:114
constexpr decltype(auto) operator()(Is const ... indices) const &&
Definition tensor.hpp:121
static constexpr auto Single(X &&value, Is const ... indices)
Definition tensor.hpp:78
pRC::Subscripts< Ns... > Subscripts
Definition tensor.hpp:39
constexpr auto & applyOnTheLeft(X &&lhs) &
Definition tensor.hpp:195
constexpr auto & operator/=(X &&rhs) &
Definition tensor.hpp:216
constexpr Tensor(Tensor const &)=default
constexpr auto & operator*=(X &&rhs) &
Definition tensor.hpp:209
typename T::IsComplexified IsComplexified
Definition tensor.hpp:60
constexpr decltype(auto) operator()(Is const ... indices) &
Definition tensor.hpp:128
constexpr auto & applyOnTheRight(X &&rhs) &
Definition tensor.hpp:202
constexpr decltype(auto) operator()(Is const ... indices) const &
Definition tensor.hpp:135
typename T::Width Width
Definition tensor.hpp:56
constexpr Tensor(X &&other)
Definition tensor.hpp:99
constexpr auto & operator=(X &&rhs) &
Definition tensor.hpp:106
constexpr Tensor & operator=(Tensor const &) &=default
static constexpr auto size(Index const dimension)
Definition tensor.hpp:70
typename Sizes::Dimension Dimension
Definition tensor.hpp:45
constexpr auto & operator+=(X &&rhs) &
Definition tensor.hpp:183
constexpr Tensor(Tensor &&)=default
typename T::Value Value
Definition tensor.hpp:47
constexpr Tensor()=default
static constexpr auto size()
Definition tensor.hpp:65
typename T::Signed Signed
Definition tensor.hpp:51
constexpr Tensor & operator=(Tensor &&) &=default
constexpr auto & operator-=(X &&rhs) &
Definition tensor.hpp:189
static constexpr auto Single(X &&value, Subscripts const &subscripts)
Definition tensor.hpp:84
pRC::Float<> T
Definition externs_nonTT.hpp:1
Definition cholesky.hpp:18
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Size Index
Definition type_traits.hpp:21
std::size_t Size
Definition type_traits.hpp:20
static constexpr X view(X &&a)
Definition view.hpp:12
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71
Tensor(TensorViews::View< T, Sizes< Ns... >, F > const &) -> Tensor< T, Ns... >
Conditional< IsSatisfied<((Ns *... *1) *sizeof(T) > cHugepageSizeByte)>, HeapArray< T, Ns... >, StackArray< T, Ns... > > Array
Definition type_traits.hpp:58
#define BEGIN_IGNORE_DIAGNOSTIC_GCC(warning)
Definition pragma.hpp:42
#define END_IGNORE_DIAGNOSTIC_GCC
Definition pragma.hpp:43
Definition type_traits.hpp:15