extension of svd routine to include solver ?gesdd from lapack #179
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is initial commit for extension of svd solver as implemented in ITensor. User can
pass a parameter to svd function inside Args container specifying method to use.
an example call: svd(A,U,V,D,{"SVDMethod","gesdd"})
if Args do not contain "SVDMethod" parameter, the default ITensor implementation of svd
solver is used. No change to calls of svd already defined anywhere in the code is necessary.
The extension is implemented at low level. A function SVDRef (defined in tensor/algs.cc)
serves as a fork. It checks for a presence of "SVDMethod" parameter in the Args. If not
found a default ITensor svd is called. Otherwise, a particular implementation identified
through string, in this case "gesdd" is called. The actual implementation of the solver
is given in a file tensor/extra-svds.cc. It performs the call to lapack ?gesdd routine.
The unit tests are included in file unittests/extra-svds_test.cc
Note: possibly column-major to row-major conversion for output VT of ?gesdd might be avoided ?