SRDef syten::MPS::apply_op_itrunc | ( | State & | a, |
Operator const & | op, | ||
Truncation | trunc, | ||
bool const | relax = true , |
||
bool const | final_rightnorm = true |
||
) |
Applies the MPO op
to the MPS a
, immediately truncating during the application.
[in,out] | a | the MPS to which the operator is applied |
[in] | op | the MPO which is applied to the state |
[in] | trunc | Truncation specification |
[in] | relax | whether to relax the truncation spec during the initial left-to-right sweep |
[in] | final_rightnorm | if false, don't do a right-normalisation at the end |
Steps taken:
References syten::MPS::Operator::dIdx, syten::MPS::State::dropUnmatched(), syten::genCombinator(), syten::genFuse(), syten::genSplit(), syten::MPS::Operator::lIdx, syten::MPS::State::lIdx, syten::MPS::State::lInt, syten::Truncation::maxBlocksize, syten::Truncation::maxStates, syten::MPS::State::maybeCache(), norm(), syten::MPS::Operator::rIdx, syten::MPS::State::rIdx, syten::MPS::State::rightnorm(), syten::MPS::State::rInt, syten::MPS::State::size(), syten::SVD::svd(), SYTEN_ASSERT, syten::Truncation::threshold, syten::MPS::Operator::uIdx, syten::MPS::State::uInt, and syten::validateTensorEdge().