In SVD, is there any way to calculate only U and S, not V^T?

+1 vote
asked Feb 20 by hexagon (160 points)


I'm trying to do HOTRG calculation for 2D Ising model.
As the system size (that I want to see) increases, computation time of SVD increases rapidly.
Actually, I don't need V^T in the process.
Is there any way to skip the calculation of V^T in SVD?


1 Answer

0 votes
answered Feb 20 by miles (14,880 points)
selected Feb 21 by hexagon
Best answer

Good question: this is what the denmatDecomp function is for. There is more detailed info about it on this page:

Basically its interface works the same way as the svd function but you have to provide a "dir" argument (either Fromleft or Fromright) which in SVD language says whether you want U or V (the other tensor will be set equal to either SV or US where S is the singular value matrix).

Internally, denmatDecomp squares the tensor you are decomposing and then calls a Hermitian diagonalization routine on it to get just U or just V. So it is more efficient than doing a full SVD.


Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.