loss function shall not depend on the phase of the eigenvectors,
     as this quantity is not well-defined. This is checked for complex
     inputs when computing the gradients of this function. As such,
     when inputs are complex and are on a CUDA device, the computation
     of the gradients of this function synchronizes that device with
     the CPU.
Warning:
 Gradients computed using the *eigenvectors* tensor will only be
 finite when "A" has distinct eigenvalues. Furthermore, if the
 distance between any two eigenvalues is close to zero, the
 gradient will be numerically unstable, as it depends on the
 eigenvalues \lambda_i through the computation of \frac{1}{\min_{i
 \neq j} \lambda_i - \lambda_j}.

See also:
 "torch.linalg.eigvalsh()" computes only the eigenvalues of a
 Hermitian matrix. Unlike "torch.linalg.eigh()", the gradients of
 "eigvalsh()" are always numerically stable.

 "torch.linalg.cholesky()" for a different decomposition of a
