v0.15.0
TensorKit v0.15.0
TensorKit v0.15 consists of a (mostly internal) rewrite of the tensor factorizations to make
use of MatrixAlgebraKit.jl.
This rewrite is important for code organization and maintenance reasons, but has some additional benefits.
Firstly, MatrixAlgebraKit provides a convenient interface for working with truncated factorizations, such that TensorKit will now support an updated range of truncation schemes, not only for the singular value decompositions, but also for the eigenvalue decompositions, a feature that was previously missing.
Secondly, the improved interface of MatrixAlgebraKit allows us to cut back on some unnecessary intermediate allocations when working with symmetric tensors, so we expect a (minor) increase in performance.
Lastly, the code is now structured to facilitate supporting new features without having to do major code alterations. In particular, this should pave the way towards supporting GPU-backed TensorMaps.
To facilitate this, there are however some deprecations and some breaking changes:
🚀 New Features & Enhancements
- Trucated eigenvalue decompositions:
eig_truncandeigh_trunc - Extended truncation schemes:
trunctolandtruncerrornow support relative and absolute tolerances, newtruncfilterstrategy to pass a filter function - Factorization pullbacks: pullback functions are now implemented through MatrixAlgebraKit, eliminating the need to define ChainRulesCore extensions for them. Additionally, we now also support differentiating through nullspace and polar decompositions.
📋 Public API Changes and breaking changes
-
Deprecated factorization functions:
leftorth->left_orthrightorth->right_orthtsvd->svd_compactandsvd_trunceig->eig_fulleigh->eigh_fullandeigh_trunc
-
Deprecated factorization structs:
OrthogonalFactorizationand its subtypes (QR, QRpos, LQ, SVD, SDD, ...) have been removed in favor of their MatrixAlgebraKit counterparts, but their constructors are still supported in deprecated mode to patch through to the correctMatrixAlgebraKit.Algorithm. -
Truncation schemes:
truncdimhas been deprecated totruncrank,truncbelowhas been deprecated totrunctolandtruncerrhas been deprecated totruncerror.
For further details and information, check out the updated docs, the changelog, or the diff for this release: v0.14.11...v0.15.0
Merged pull requests: