std::tuple< STensor, STensor, SBasis > syten::STensorImpl::qr | ( | STensor const & | in, |
SBasisId const & | uncombined, | ||
DecompRescaleCGC const | rescaleCGC = DecompRescaleCGC::Yes , |
||
FullQR const | full = FullQR::n() , |
||
SourceLocation const & | loc = SourceLocation::current() |
||
) |
in | input tensor |
uncombined | basis over which the QR needs to be performed |
rescaleCGC | if this is DecompRescaleCGC::Yes, the CGCs are rescaled such that they give identities when contracted over all legs but uncombined |
full | if FullQR::y(), a full QR is performed (instead of a thin QR) |
loc | Callsite identifier. |
qr-gen
).R
is square, i.e. the dimension of the basis uncombined
is smaller than the dimension of all other legs combined and only a thin QR (full = FullQR::n()
) was requested. References syten::STensorImpl::STensor::autodiff_enabled(), syten::STensorImpl::STensor::b(), syten::STensorImpl::STensor::bi(), syten::STensorImpl::Autodiff::create(), syten::STensorImpl::SBasis::dir(), syten::STensorImpl::STensor::enable_autodiff(), syten::STensorImpl::SBasis::f(), syten::STensorImpl::STensor::get_autodiff(), syten::STensorImpl::STensor::get_bases(), syten::STensorImpl::STensor::get_fermionic_order(), if_constexpr, syten::Inc, make_zero(), std::move(), syten::mve(), syten::YesNo< T >::n(), syten::QR::qr(), syten::STensorImpl::Autodiff::qr_adjoint_evaluator(), SYTEN_ASSERT_MSG, SYTEN_TENSOR_RANK, and syten::STensorImpl::STensor::visit().
Referenced by syten::Delinearise::cols_only(), syten::T3N::State::descendantNormaliseNode(), syten::IPEPSv2::directional_qr(), syten::IPEPS::Horz2CTM::expectation_value(), syten::IPEPS::Vert2CTM::expectation_value(), syten::IPEPSv2::full_update_apply_gate(), syten::IPEPSv2::full_update_gauge_fix(), syten::IPEPSv2::full_update_horizontal(), syten::IPEPSv2::full_update_split_evenly(), syten::IPEPSv2::full_update_vertical(), syten::IPEPSv2::CornerTransferMatrix::grow_helper(), syten::MPS::DMRG::Worker::gse_create_expanded(), syten::Pyten::init_dense_tensor(), syten::T3N::State::rootNormaliseNode(), syten::MPS::DMRG::Worker::sweepLeft2sVar(), and syten::MPS::DMRG::Worker::sweepRight2sVar().