SyTen

◆ qr()

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() 
)

QR decomposition for STensor.

Parameters
ininput tensor
uncombinedbasis over which the QR needs to be performed
rescaleCGCif this is DecompRescaleCGC::Yes, the CGCs are rescaled such that they give identities when contracted over all legs but uncombined
fullif FullQR::y(), a full QR is performed (instead of a thin QR)
locCallsite identifier.
Returns
a tuple of tensors Q and R and the new shared basis of Q (nicknamed qr-gen).
Remarks
This function is autodifferentiable if 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().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: