Make SVD more general to accommodate graded arrays#114
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #114 +/- ##
==========================================
+ Coverage 75.15% 75.23% +0.07%
==========================================
Files 29 29
Lines 1284 1296 +12
==========================================
+ Hits 965 975 +10
- Misses 319 321 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@lkdvos this is ready for review. I think it would be nice to merge this soon so then I can make a corresponding PR to GradedArrays.jl using these new customization points to fix ITensor/GradedArrays.jl#29 (though I know you are traveling so may not have time to review, I can make a draft PR to GradedArrays.jl in the meantime). I think the main considerations are:
|
|
You can see how this interface is used to account for abelian symmetries in ITensor/GradedArrays.jl#33. |
lkdvos
left a comment
There was a problem hiding this comment.
I think this looks very clean in general, should be good to go?
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
Thanks, I think so, the main things I wanted feedback on are the names/interfaces of the new interface functions |
|
I don't think I can come up with anything better than |
|
That's basically how I feel as well. Since it is semi-public we can always reassess as we go along (we'll have to make a breaking change to change it but it would be very minor since it will only be used by GradedArrays.jl for now). |
@lkdvos this is still work in progress, but this should give you an idea for what I have in mind for generalizing the block sparse SVD function to accommodate graded arrays.
With the right overloads of
eachblockaxis,mortar_axis, andsimilar_outputfor graded unit ranges/arrays, locally I'm able to preserve symmetry information.To-do: