-
Notifications
You must be signed in to change notification settings - Fork 5
Description
@lkdvos , maybe we can discuss the interface here.
For the family of methods like qr, eigen and svd (possibly trunced) there needs to be support for:
-
backends (LAPACK, CUSOLVER, KrylovKit, ...)
-
algorithms supported by these backends (QRIteration, DivideAndConquer, RobustRepresentations, Jacobi,...)
-
possible options/keywords to configure those algorithms
-
possible keywords to control truncation? specific to svd?
Then there is something like polar? Do we want a specific method for polar decomposition. That could be computed via SVD (and thus need the previous levels of control), but there are also other packages (=backends?) that can do this without SVD.
If we also define methods like leftorth and friends here (this could also be restricted to TensorKit), they can be computed using e.g. either svd or qr. I don't know if there are other relevant strategies? So the question is how to convey that information? A strategy or kind arg/kwarg?
Something similar exists for matrix functions, like exponential, which can use things like Pade approximations, Schur-Parlett, diagonalisation in the case of hermitian matrices, ….