3#ifndef cMHN_COMMON_CALCULATE_PTHETA_H
4#define cMHN_COMMON_CALCULATE_PTHETA_H
29 template<
class T, pRC::Size D>
65 template<pRC::Size R,
class T,
class X, pRC::Size D>
67 T const &toleranceSolver)
69 using ModeSizes =
decltype(TT::getModeSizes<D>());
79 auto pTheta = TT::ALS<R>(op, p0, toleranceSolver, eval(pInit));
81 pTheta /= scalarProduct(pTheta,
102 template<pRC::Size R,
class T, pRC::Size D>
104 T const &toleranceSolver)
106 using ModeSizes =
decltype(TT::getModeSizes<D>());
107 using Ranks =
decltype(TT::getRanks<D, R>());
113 auto pInit = round<Ranks>(
116 pInit /= scalarProduct(pInit,
119 return calculatePTheta<R>(op, pInit, toleranceSolver);
pRC::Size const D
Definition CalculatePThetaTests.cpp:9
Class storing an MHN operator represented by a theta matrix (for TT calculations)
Definition mhn_operator.hpp:24
Class storing an MHN operator represented by a theta matrix (for non TT calculations)
Definition mhn_operator.hpp:24
Definition type_traits.hpp:57
Definition subscripts.hpp:20
Definition type_traits.hpp:17
static constexpr auto Single(X &&value, Is const ... indices)
Definition tensor.hpp:78
Definition threefry.hpp:24
pRC::Float<> T
Definition externs_nonTT.hpp:1
X jacobi(nonTT::MHNOperator< T, D > const &op, X const &b)
Solves the linear system (1-Q)x=b or (1-Q)^Tx=b.
Definition jacobi.hpp:26
Definition calculate_pTheta.hpp:16
decltype(expand(pRC::makeConstantSequence< pRC::Size, D, 2 >(), [](auto const ... Ns) { return pRC::Tensor< T, Ns... >{};})) calculatePTheta(nonTT::MHNOperator< T, D > const &op)
Calculates the vector pTheta given a nonTT MHN Operator.
Definition calculate_pTheta.hpp:35
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
static constexpr auto random(RandomEngine &rng, D &distribution)
Definition random.hpp:12
std::size_t Size
Definition type_traits.hpp:20
Sequence< Size, Ns... > Sizes
Definition type_traits.hpp:238
static constexpr auto unit()
Definition unit.hpp:12