It appears that the ITensor svd operation does not ultimately call a LAPACK SVD routine. What advantage does this implementation have?

+1 vote

Best answer

Hi Brendan,

Thanks for the question. This is the case mainly for historical reasons, because we were having some issues with the LAPACK SVD and needed a more reliable SVD as well as a more accurate one.

But it's been on my short list to put in a backend that calls LAPACK for cases where speed is the primary concern. Based on how the tests go, I may make LAPACK the default and allow the current implementation to be turned on with a flag for cases where high accuracy is needed (the current implementation uses a recursive algorithm that corrects errors made in the smallest singular values in earlier passes; it is described in the Appendix of the real-space parallel DMRG paper).

Miles

...