cMHN 1.2
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
from_cores.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_FROM_CORES_H
4#define pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_FROM_CORES_H
5
9
11{
12 template<class... Xs>
14 static inline constexpr auto fromCores(Xs &&...cores)
15 {
16 constexpr auto Dimension = sizeof...(Xs);
18
19 auto ret = []()
20 {
21 if constexpr(Common<Constant<Size,
23 {
24 using N = Sizes<RemoveReference<Xs>::size(1)...>;
25 using Ranks =
28 decltype(chip<Dimension - 1>(
30
32 }
33 if constexpr(Common<Constant<Size,
35 {
36 using M = Sizes<RemoveReference<Xs>::size(1)...>;
37 using N = Sizes<RemoveReference<Xs>::size(2)...>;
38 using Ranks =
41 decltype(chip<Dimension - 1>(
43
45 }
46 }();
47
49 [&ret, &cores...](auto const... seq)
50 {
51 ((ret.template core<seq>() = forward<Xs>(cores)), ...);
52 });
53
54 return ret;
55 }
56}
57#endif // pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_FROM_CORES_H
Definition sequence.hpp:29
static constexpr auto size()
Definition sequence.hpp:69
Definition declarations.hpp:45
Definition from_cores.hpp:11
Operator(OperatorViews::View< T, M, N, Ranks, F > const &) -> Operator< T, M, N, Ranks >
static constexpr auto fromCores(Xs &&...cores)
Definition from_cores.hpp:14
Tensor(TensorViews::View< T, N, Ranks, F > const &) -> Tensor< T, N, Ranks >
std::size_t Size
Definition basics.hpp:31
std::remove_reference_t< T > RemoveReference
Definition basics.hpp:41
std::common_type_t< Ts... > Common
Definition basics.hpp:53
static constexpr auto makeSeries()
Definition sequence.hpp:390
static constexpr auto chip(Sequence< T, Is... > const)
Definition sequence.hpp:584
std::integral_constant< T, V > Constant
Definition basics.hpp:38
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:383