SyTen

◆ prod() [2/3]

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.

Remarks
This function is autodifferentiable.

References syten::conj(), conj(), syten::STensorImpl::Autodiff::create_product_differentiable(), if_constexpr, syten::STensorImpl::STensorProxy::is_conjugated(), 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().

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