Tensor< 2 > syten::exponentialTensorSym | ( | Tensor< 2 > const & | in, |
SDef const | prefactor, | ||
Basis const & | full_basis = Basis() |
||
) |
Builds the exponential \( e^{c A} \) of a hermitian rank-2 tensor \( A \) and a scalar prefactor \( c \).
The directions of the legs of the tensor are arbitrary, but you must ensure that the CGC space is proportional to the identity (i.e. one of the legs has to be incoming and the other has to be outgoing).
Explicitly diagonalises the dense tensor, hence this is only useful for small problems.
[in] | in | tensor \( A \) |
[in] | prefactor | scalar factor \( c \) |
[in] | full_basis | the full basis of the first tensor leg |
References dense(), syten::DenseTensor< rank, Scalar >::dim(), syten::DenseTensor< rank, Scalar >::dims, syten::Basis::dir, syten::Tensor< rank >::dirs, syten::Tensor< rank >::emplace_back(), syten::DenseEigensolver::DenseSymEigensolverBase< Type >::evalues, syten::DenseEigensolver::DenseSymEigensolverBase< Type >::evectors, std::exp(), syten::Tensor< rank >::getBasisMap(), hasCGC(), herm(), makeIdentity(), std::move(), normSqd(), syten::Tensor< rank >::push_back(), std::vector< T >::push_back(), syten::Tensor< rank >::reduce(), syten::Basis::size(), SYTEN_ASSERT, SYTEN_ASSERT_MSG, SYTEN_SMALL_THRESHOLD, transpose(), and underThreshold().
Referenced by syten::MPS::TEBD::build_local_T(), syten::IPEPS::exp(), syten::STensorImpl::exp(), and syten::MPS::SwappableTEBD::exponentiate_rank6_tensor().