-
Notifications
You must be signed in to change notification settings - Fork 56
MatrixAlgebraKit decompositions #230
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #230 +/- ##
==========================================
- Coverage 82.85% 78.02% -4.84%
==========================================
Files 44 49 +5
Lines 5757 5760 +3
==========================================
- Hits 4770 4494 -276
- Misses 987 1266 +279 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
The test failures on empty tensors should be resolved once QuantumKitHub/MatrixAlgebraKit.jl#37 is merged. @Jutho I think this is ready for another round of review, it definitely requires a bunch more cleanup but I think I am getting somewhere now, the improvements in MatrixAlgebraKit have definitely helped a bunch. |
dc34c24 to
1903b01
Compare
Co-authored-by: Jutho <[email protected]>
Co-authored-by: Jutho <[email protected]>
This PR is part of a large set of changes that alters the backend from
TensorKit.MatrixAlgebratoMatrixAlgebraKitfor the factorizations.Concretely, this is achieved through a new submodule
TensorKit.Factorizationsthat implements most of theMatrixAlgebraKitinterface, along with some overloads and reimplementations to be somewhat backwards compatible.New features
foreachblock(f, t::AbstractTensorMap...)is a new function that is meant to provide a uniform interface to iterate through the blocks of a collection of tensors. The main purpose is to centralize this concept to easily add multithreading over the blocks. In order to break up this PR the actual multithreading implementation is left for a follow-up PR.eig_truncandeigh_truncominusand its unicode variant can now be used to obtain the orthogonal complement of a space, ie ifW = oplus(V1, V2),V2 = ominus(W, V1).Breaking changes
OrthogonalFactorizationstructs have been removed, but their constructors are deprecated to obtain equivalentMatrixAlgebraKitalgorithm structs.leftorth,rightorth,tsvd,eig,eighhave been deprecated in favor of the MatrixAlgebraKit variants.MatrixAlgebraKit. This meanstruncdimis replaced bytruncrank,trunctolis replaced bytruncbelow, and there are deprecation warnings for the old functions.left_orthandright_orthfunctions will now always output tensors with a single space connecting them, which was not the case forPolardecompositions previously. To retrieve the old behavior withisposdefRfactors (equal domain and codomain instead of isomorphic), the functionsleft_polarandright_polarcan be used.left_orthandright_orthfunctions will now always have a connecting space withisdual=false. This is different from the previous behavior where someN,1or1,Ntensors kept theisdualflag on the connecting leg.permuteandbraid.