SyTen

◆ cols() [2/2]

template<Rank rank>
Index syten::Delinearise::cols ( Tensor< rank > const &  in,
Index const  uncombinedLeg,
Tensor< rank > &  p,
Tensor< 2 > &  t,
std::vector< Index leading_dimensions = std::vector<Index>(),
bool  relax_if_necessary = false 
)
inline

Column-based Delinearisation.

Parameters
[in]ininput tensor to decompose into in → p t
[in]uncombinedLegleg of in/p which is not combined and at which t attaches
[out]poutput tensor with same rank as in
[out]toutput tensor with rank 2
[in]leading_dimensionsnumber of leading dimensions for threshold estimates
[in]relax_if_necessaryDo a rank-revealing QR decomposition after each dense decomposition. If the resulting matrix is not full rank, relax the epsilon threshold to allow cancellation to zero and re-try.
Returns
the number of discarded vectors

References syten::Tensor< rank >::clear(), cols(), syten::DenseTensor< rank, Scalar >::dim(), syten::Tensor< rank >::dirs, syten::Tensor< rank >::empty(), syten::hasCGC(), syten::makeIdentity(), std::move(), syten::No, syten::partial_abs(), syten::Tensor< rank >::push_back(), std::vector< T >::push_back(), syten::rank(), syten::Tensor< rank >::reduce(), syten::Tensor< rank >::reserve(), std::vector< T >::size(), SYTEN_DELINEARISE_THRESHOLD, and syten::tensorSortBuckets().

+ Here is the call graph for this function: