| std::tuple< SRDef, STensor, STensor, STensor, SBasis, SBasis > syten::STensorImpl::svd | ( | STensor | in, |
| std::vector< SBasisId > const & | uncombined, | ||
| Direction const | a, | ||
| Truncation const & | trunc = Truncation(), |
||
| DecompRescaleCGC const | rescaleCGC = DecompRescaleCGC::Yes, |
||
| GaugeFixSVD | gf = GaugeFixSVD::n(), |
||
| SourceLocation const & | loc = SourceLocation::current() |
||
| ) |
This is an useful overload for splitting tensors into two by defining a partition of legs.
Please note, that this function always makes a copy of the input. The input legs connection to the split off tensors will be of direction a. Otherwise this function should behave like the regular SVD.
References syten::STensorImpl::STensor::autodiff_enabled(), syten::STensorImpl::STensor::b(), std::vector< T >::back(), syten::STensorImpl::STensor::clear(), demerge(), syten::STensorImpl::STensor::e(), flip_on_tensor(), syten::Inc, std::make_pair(), merge(), syten::Out, std::vector< T >::push_back(), syten::STensorImpl::STensor::rank(), std::vector< T >::size(), svd(), SYTEN_ASSERT, and std::tie().
Here is the call graph for this function: