SyTen

◆ svd_adjoint_evaluator()

STensor syten::STensorImpl::Autodiff::svd_adjoint_evaluator ( ComputeNode node,
STensorId const  result_id,
SBasisId const &  us_basis,
SBasisId const &  sv_basis 
)

Evaluates the adjoint of a SVD identified by ComputeNode node.

Parameters
nodeReference to the ComputeNode representing the SVD
result_idID of the tensor which is to be differentiated
us_basisID of the generated basis between U and S tensors
sv_basisID of the generated basis between S and V tensors
Remarks
The expression follows Townsend, "Differentiating the Singular Value Decomposition", 2016, with some educated guesses on what to conjugate (note that I am evaluating the conjugate of his expression, too!). It may be wrong.

References syten::STensorImpl::conj(), syten::STensorImpl::SBasisId::cprime(), syten::STensorImpl::gen_io(), syten::STensorImpl::Autodiff::ComputeNode::get_cached_tensors(), syten::STensorImpl::Autodiff::ComputeNode::get_output_adjoint(), syten::STensorImpl::hadamard(), syten::STensorImpl::hadamard_inv_diffdiff(), syten::RepRegister::id(), syten::STensorImpl::invert_diagonal(), std::move(), syten::STensorImpl::STensorProxy::prime(), syten::STensorImpl::project(), syten::STensorImpl::proxy(), and syten::STensorImpl::sum().

Referenced by syten::STensorImpl::svd().

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