SyTen

◆ eigenSym()

std::tuple< Tensor< 2 >, Tensor< 2 > > syten::Eigen::eigenSym ( Tensor< 2 >  in,
SourceLocation  location = SourceLocation::current() 
)

Decomposes the tensor in into a tuple [u, d] such that u·d·conj(u) is in.

auto [u, d] = eigenSym(inp);
auto ud = prod<1>(u, d, "a,b|b,c|a,c");
auto uduh = prod<1>(ud, u, "a,c|d,c|a,d", Conj::y());
SYTEN_ASSERT(uduh == inp)
#define SYTEN_ASSERT(x)
Throws a std::runtime_error if the first argument evaluates to false.
Definition: macros.h:57
std::tuple< Tensor< 2 >, Tensor< 2 > > eigenSym(Tensor< 2 > in, SourceLocation location)
Decomposes the tensor in into a tuple [u, d] such that u·d·conj(u) is in.
Definition: tensor_decomposition_eigen.cpp:14
static YesNo y()
factory for 'true' flags
Definition: toggle_enums.h:40

References std::clock(), std::chrono::duration::count(), syten::Tensor< rank >::dirs, syten::hasCGC(), syten::makeIdentity(), std::move(), std::chrono::high_resolution_clock::now(), syten::Tensor< rank >::size(), SYTEN_ASSERT_MSG, syten::EnvVars::tensor_time, syten::MemoryUsage::totalSize(), and syten::transpose().

Referenced by syten::MPS::SymConv::SU2::Converter_SU2U1::decompose(), syten::MPS::Snapshots::Workspace::decompose_sso(), syten::STensorImpl::eigen_sym(), syten::IPEPS::gauge_fix(), and syten::Pyten::init_tensor_decomp().

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