| void syten::QR::qr | ( | Tensor< rank > const & | in, |
| Index | uncombinedLeg, | ||
| Tensor< rank > & | q, | ||
| Tensor< 2 > & | r, | ||
| DecompRescaleCGC const | rescaleCGC = DecompRescaleCGC::Yes, |
||
| FullQR const | full = FullQR{false}, |
||
| SourceLocation | location = SourceLocation::current() |
||
| ) |
QR decomposition orthogonalisation, does not truncate!
| [in] | in | input tensor to decompose into in → q r |
| [in] | uncombinedLeg | leg of in/q which is not combined and at which r attaches |
| [out] | q | output tensor with same rank as in |
| [out] | r | output tensor with rank 2 |
| [in] | rescaleCGC | whether or not to rescale the CGC spaces to unity |
| [in] | full | FullQR::Yes if we do a full QR, FullQR::No for a thin QR (default) |
| [in] | location | Callsite identifier. |
Given a rank-3 MPS tensor a, you can left-orthogonalise it via (assuming MPS::State::[url]Idx == [123]).
For a right-orthogonal tensor, you do
Referenced by syten::MPS::error_estimate_2svariance(), syten::IPEPS::gauge_fix(), syten::MPS::TDVP::Worker::gse_create_expanded(), syten::Pyten::init_tensor_decomp(), syten::MPS::left_complement(), syten::MPS::State::leftnorm(), syten::MPS::LBOState::leftnormM(), syten::MPS::LBOState::physnormM(), syten::MPS::LBOState::physnormV(), positify_diagonal(), syten::STensorImpl::qr(), syten::IPEPS::qr_to_back(), syten::IPEPS::qr_to_back_r(), syten::IPEPS::qr_to_front(), syten::IPEPS::qr_to_left(), syten::IPEPS::qr_to_right(), syten::MPS::right_complement(), syten::MPS::State::rightnorm(), syten::MPS::LBOState::rightnormM(), and syten::MPS::TDVP::LBOWorker::sweep_single().
Here is the caller graph for this function: