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.
[in] | target | input vector which is to be orthogonalised |
[in] | first | iterator pointing to the first element of the range of vectors against which we orthogonalise |
[in] | last | iterator pointing one past the end of the range of vectors against which we orthogonalise |
[in] | careful | if 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] | xtxinv | matrix of vector overlaps |
[*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().