3#ifndef pRC_TENSOR_TRAIN_OPERATOR_OPERATOR_H
4#define pRC_TENSOR_TRAIN_OPERATOR_OPERATOR_H
16 requires(IsValue<T> || IsComplex<T>) &&
18 (
Sizes<Ms...>::Dimension - 1 ==
Sizes<Rs...>::Dimension)
32 static constexpr auto Dimension = N::Dimension;
36 requires(S::Dimension, Ranks::Dimension)
47 static constexpr auto m()
48 requires requires { M::size(); }
53 static constexpr auto m(
Index const dimension)
55 return M::size(dimension);
58 static constexpr auto n()
59 requires requires { N::size(); }
64 static constexpr auto n(
Index const dimension)
66 return N::size(dimension);
69 static constexpr auto size()
80 template<
class X, IsConvertible<Index>... Is>
82 static constexpr auto Single(X &&
value, Is const... indices)
92 [&
value, &subscripts](
auto const... seq)
94 return Single(forward<X>(
value),
132 *
this = forward<X>(other);
139 view(*
this) = forward<X>(rhs);
144 constexpr decltype(
auto)
core() &&
146 return get<C>(move(mCores));
150 constexpr decltype(
auto)
core()
const &&
152 return get<C>(move(mCores));
156 constexpr decltype(
auto)
core() &
158 return get<C>(mCores);
162 constexpr decltype(
auto)
core()
const &
164 return get<C>(mCores);
167 template<IsConvertible<Index>... Is>
168 requires(
sizeof...(Is) == 2 * Dimension)
169 constexpr decltype(
auto)
operator()(Is
const... indices)
const
171 return view(*
this)(indices...);
174 constexpr decltype(
auto)
operator()(
Subscripts const &subscripts)
const
176 return view(*
this)(subscripts);
182 return view(*
this)(is, js);
189 return *
this = *
this + forward<X>(rhs);
196 return *
this = *
this - forward<X>(rhs);
203 view(*this).applyOnTheLeft(forward<X>(lhs));
211 view(*this).applyOnTheRight(forward<X>(rhs));
219 view(*
this) *= forward<X>(rhs);
227 return *
this = *
this / forward<X>(rhs);
231 requires requires {
typename pRC::Tensor<
T, Ms..., Ns...>; } &&
233 explicit constexpr operator X()
const
239 template<
Index... seq>
251 template<
class T,
class M,
class N,
class Ranks,
class F>
258 template<
class T,
Size... Ms,
Size... Ns,
class R>
Definition sequence.hpp:29
static constexpr Size Dimension
Definition sequence.hpp:47
static constexpr auto size()
Definition sequence.hpp:69
Definition subscripts.hpp:21
Definition enumerate.hpp:20
Definition declarations.hpp:25
static constexpr auto m(Index const dimension)
Definition operator.hpp:53
constexpr Operator(Operator const &)=default
constexpr decltype(auto) core() const &&
Definition operator.hpp:150
constexpr Operator & operator=(Operator &&) &=default
constexpr auto & operator+=(X &&rhs) &
Definition operator.hpp:187
constexpr auto & applyOnTheRight(X &&rhs) &
Definition operator.hpp:209
constexpr auto & operator=(X &&rhs) &
Definition operator.hpp:137
static constexpr auto size(Index const dimension)
Definition operator.hpp:75
constexpr Operator & operator=(Operator const &) &=default
constexpr decltype(auto) core() &
Definition operator.hpp:156
static constexpr auto m()
Definition operator.hpp:47
constexpr auto & operator/=(X &&rhs) &
Definition operator.hpp:225
constexpr decltype(auto) core() const &
Definition operator.hpp:162
constexpr Operator(X &&other)
Definition operator.hpp:130
static constexpr auto n()
Definition operator.hpp:58
constexpr auto & operator*=(X &&rhs) &
Definition operator.hpp:217
static constexpr auto n(Index const dimension)
Definition operator.hpp:64
constexpr decltype(auto) core() &&
Definition operator.hpp:144
static constexpr auto Single(X &&value, Subscripts const &subscripts)
Definition operator.hpp:89
static constexpr auto Single(X &&value, SubscriptsM const &is, SubscriptsN const &js)
Definition operator.hpp:102
constexpr Operator()=default
constexpr auto & applyOnTheLeft(X &&lhs) &
Definition operator.hpp:201
constexpr auto & operator-=(X &&rhs) &
Definition operator.hpp:194
constexpr Operator(Operator &&)=default
static constexpr auto size()
Definition operator.hpp:69
Definition declarations.hpp:20
static constexpr auto size()
Definition tensor.hpp:39
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 from_cores.hpp:11
Definition cholesky.hpp:10
Size Index
Definition basics.hpp:32
std::size_t Size
Definition basics.hpp:31
std::tuple< Ts... > Tuple
Definition basics.hpp:23
static constexpr decltype(auto) view(X &&a)
Definition view.hpp:13
Tensor(TensorViews::View< T, Sizes< Ns... >, F > const &) -> Tensor< T, Ns... >
Sequence< Size, Ns... > Sizes
Definition sequence.hpp:100
static constexpr auto makeSeries()
Definition sequence.hpp:390
RemoveConst< RemoveReference< T > > RemoveConstReference
Definition basics.hpp:47
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:383
static constexpr auto identity()
Definition identity.hpp:13