v0.6.5
MatrixAlgebraKit v0.6.5
This release completes the separation of Algorithm and Driver concepts across all decomposition types, and adds several new features including SafeDivideAndConquer, TruncationUnion, DefaultAlgorithm, and AD rules for hermitian projections.
Highlights
- Algorithm/Driver separation for QR/LQ, SVD, and Schur/Eig decompositions — cleaner dispatch and easier extensibility (#178, #189, #194, #196)
SafeDivideAndConquer— a more robust SVD algorithm variant (#185)TruncationUnion— combine multiple truncation schemes with minimal rank support (#183)DefaultAlgorithm— explicit dispatch to the default algorithm (#195)- AD rules for (anti-)hermitian projection via ChainRules, Mooncake, and Enzyme (#174)
Full Changelog
See CHANGELOG for the complete list of changes.
Merged pull requests:
- Support for
Diagonalinorthnull(#144) (@kshyatt) - Highlight usage of
default_algorithmin decomposition documentation (#169) (@leburgel) - Change QR/LQ decompositions to use
positive = trueby default (#170) (@leburgel) - add specializations
svd_trunc(!)forTruncatedAlgorithm(#171) (@lkdvos) - Default tolerances for SVD-based nullspaces (#172) (@lkdvos)
- AD rules for (anti-) hermitian projection (#174) (@lkdvos)
- Mooncake testsuite refactor (#175) (@lkdvos)
- Refactor Enzyme testsuite (#177) (@kshyatt)
- Separate
AlgorithmandDriver(#178) (@lkdvos) - Some changes to the ad test utils (#180) (@Jutho)
- Define default algorithms for
SubArrayandReshapedArray(#182) (@lkdvos) - Add
TruncationUnionto support supplying minimal ranks (#183) (@lkdvos) - Try to improve type stability with
Householder(#184) (@lkdvos) - SafeSVD alternative (#185) (@Jutho)
- Run trunc tests with Float32 thanks to new Enzyme (#187) (@kshyatt)
- Separate
AlgorithmandDriver- part II (SVD) (#189) (@lkdvos) - Counter-attack TNRKit with increased coverage (#190) (@kshyatt)
- Disable JET for now (#191) (@kshyatt)
- Now test Jacobi SVD for all matrices (#193) (@kshyatt)
- Separate
AlgorithmandDriver- part III (Schur-Eig) (#194) (@lkdvos) - Add
DefaultAlgorithm(#195) (@lkdvos) - some more updates on algorithms (#196) (@Jutho)
- Consistent
::AbstractMatrixannotations (#198) (@lkdvos) - Add algorithm section in the docs (#199) (@lkdvos)
- Release v0.6.5 (#200) (@lkdvos)
- CompatHelper: bump compat for GenericLinearAlgebra in [weakdeps] to 0.4, (keep existing compat) (#201) (@github-actions[bot])
Closed issues:
- Add
DefaultAlgorithmas a placeholder for postponing the selection of the default algorithm. (#31) - [AD] rrules for
project_(anti)hermitian(#99) right_nullfor a simple matrix (#166)- Add use of
MatrixAlgebraKit.default_algorithmto decomposition documentation (#167) - Change default
left_orthalgorithm choice to use a positive QR decomposition? (#168) - [Feature request] Option to specify algorithm "flavor" without restricting data storage type (#176)
- Allow one to set a minimum dimension when truncating. (#181)
- [docs] Algorithm selection (#192)