SyTen

◆ orthogonalise_solve_svd() [2/2]

template<typename Vector , typename Iterator >
std::remove_reference< Vector >::type syten::orthogonalise_solve_svd ( Vector &&  target,
Iterator  first,
Iterator  last,
DenseTensor< 2 > const &  xtxinv,
bool  careful 
)

Generic implementation of orthogonalisation against a set of vectors using SVD-based orthogonalisation.

Parameters
[in]targetinput vector which is to be orthogonalised
[in]firstiterator pointing to the first element of the range of vectors against which we orthogonalise
[in]lastiterator pointing one past the end of the range of vectors against which we orthogonalise
[in]carefulif true, does not apply orthogonalisation against a specific element of [*first, *last) if the resulting vector would have norm 1e-3 smaller than the input vector.
[in]xtxinvmatrix of vector overlaps
Returns
the orthogonalised vector
Remarks
As this function uses the SVD-based orthogonalisation, the vectors [*first, *last) don't have to be orthogonal.

References syten::MPS::distance(), std::move(), norm(), overlap(), overThreshold(), and std::pow().

Referenced by syten::MPS::apply_op_orthogonalise_fit(), orthogonalise_solve_svd(), syten::MPS::orthogonalise_variational(), syten::MPS::orthogonalise_variational_two_site(), syten::MPS::DMRG::LBOWorker::solveLocalM(), and syten::MPS::DMRG::LBOWorker::solveLocalV().

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