SyTen

◆ split() [2/2]

template<Rank srank, typename Scalar >
GenericDenseTensor< srank+1, Scalar > syten::IdentityDenseTensorImpl::split ( IdentityDenseTensor< 3, Scalar > const &  a,
DenseTensor< srank, Scalar > const &  b,
std::array< int, 3 > const &  c_a,
std::array< int, srank > const &  c_b 
)
inline

Split of two legs of a standard dense tensor using a rank-3 identity dense tensor.

This function can be optimised further, the last transposition is typically not necessary.

References syten::DynArray< Type >::begin(), syten::IdentityDenseTensorImpl::IdentityDenseTensor< rank, Scalar >::dim(), syten::DynArray< Type >::end(), std::fill(), syten::DenseTensor< rank, Scalar >::get_data(), std::max(), syten::No, syten::IdentityDenseTensorImpl::IdentityDenseTensor< rank, Scalar >::offset, syten::LimVec< Type, max, MaxType, type >::push_back(), syten::LimVec< Type, max, MaxType, type >::reserve(), syten::LimVec< Type, max, MaxType, type >::resize(), syten::DenseTensor< rank, Scalar >::size(), and SYTEN_ASSERT.

Referenced by syten::MPS::DMRG::Worker::expand_to_right(), syten::T3N::genPhysCmp(), syten::T3N::genPhysId(), prodD(), syten::MPS::DMRG::Worker::solveLocalTwoSite(), syten::MPS::DMRG::Worker::sweepLeftTwoSite(), and syten::MPS::DMRG::Worker::sweepRightTwoSite().

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