STensor syten::STensorImpl::prod | ( | STensorProxy const & | a, |
STensorProxy const & | b, | ||
SourceLocation const & | loc = SourceLocation::current() |
||
) |
Contracts tensors a
and b
over all common indices.
STensor
objects can be implicitly converted to STensorProxy
objects. Additionally, calling conj()
on a STensor
creates a STensorProxy
object which remembers that it has to complex-conjugate the underlying tensor during contractions.
The implementation calls prod_impl()
which matches bases and already has the input tensor ranks as template parameters and then calls prod_impl_impl()
to actually perform the contraction for a specific number of contracted legs.
References syten::conj(), conj(), syten::STensorImpl::Autodiff::create_product_differentiable(), if_constexpr, syten::STensorImpl::STensorProxy::is_conjugated(), prod(), SYTEN_TENSOR_RANK, and syten::STensorImpl::STensorProxy::visit().
Referenced by syten::STensorImpl::Autodiff::create_product_differentiable(), demerge(), flip_in_product(), flip_on_tensor(), invert_diagonal(), merge(), normSqd(), operator*(), operator*=(), overlap(), prod(), project(), real(), and trace().