SRDef syten::MPS::State::leftnorm | ( | Index const | site, |
Truncation | trunc = Truncation() , |
||
State::DropNorm const | dropN = DropNorm::Yes , |
||
State::DropUnmatched const | dropU = DropUnmatched::lr |
||
) |
Left-normalises the tensor \(X_i\) on the specified site as \(X_i^{\sigma_i} \to U^\sigma S V\) and multiplies the corresponding transformation \(SV\) in the next tensor on the right \(X_{i+1} \to SV X_{i+1}\).
After normalisation, the contraction of \(X\) with its hermitian conjugate over the physical and left indices should give an identity matrix:
.-→[+]--→ .--→ | ↓ = | '-←[ ]--← '--←
site | location of tensor to normalise |
trunc | Truncation specification |
dropN | if tensors on all sites but site are normalised on entry, ensure that the state is normalised on exit. |
dropU | whether, and if so, compared to where, drop unmatched blocks |
If trunc is a default syten::Truncation object, a QR decomposition rather than a SVD is used.
References syten::clear(), dropUnmatched(), lInt, syten::MPS::norm(), syten::QR::qr(), rIdx, rInt, syten::singValSqdToError(), size(), syten::Tensor< rank >::size(), syten::SVD::svd(), SYTEN_ZNORM_THRESHOLD, uInt, and syten::underThreshold().
Referenced by syten::allSiteEntropy(), syten::mutualInfo::allSiteEntropy(), syten::MPS::apply_op_orthogonalise_fit(), syten::MPS::ProjectedPurification::correlator(), syten::mutualInfo::entropyOneSite(), syten::entropyOneSite(), syten::entropyTwoSite(), syten::mutualInfo::entropyTwoSite(), syten::Pyten::init_mps(), leftnorm(), syten::MPS::ProjectedPurification::local_expectation(), syten::MPS::Snapshots::Workspace::move_to_site(), syten::MPS::RDMs::OrbRDM::OrbRDM(), syten::MPS::orthogonalise_variational(), syten::MPS::TDVP::Worker::sync(), truncate(), truncateVariational(), syten::MPS::DMRG::Worker::Worker(), and syten::MPS::TDVP::Worker::Worker().