diff --git a/Project.toml b/Project.toml index 4e2b1a604..efabc5d39 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "MatrixAlgebraKit" uuid = "6c742aac-3347-4629-af66-fc926824e5e4" -version = "0.6.4" +version = "0.6.5" authors = ["Jutho Haegeman , Lukas Devos, Katharine Hyatt and contributors"] [deps] diff --git a/docs/src/changelog.md b/docs/src/changelog.md index f949504f0..c62dc4242 100644 --- a/docs/src/changelog.md +++ b/docs/src/changelog.md @@ -18,21 +18,38 @@ When making changes to this project, please update the "Unreleased" section with When releasing a new version, move the "Unreleased" changes to a new version section with the release date. -## [Unreleased](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/compare/v0.6.4...HEAD) +## [Unreleased](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/compare/v0.6.5...HEAD) ### Added ### Changed -- The default behavior of SVD-based nullspaces now includes some small tolerance ([#172](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/170)). -- The Mooncake rules for truncated decompositions with `TruncatedAlgorithm` now use the pullbacks that make use of the full decomposition. ([#171](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/171)) - ### Deprecated ### Removed ### Fixed +### Performance + +## [0.6.5](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/compare/v0.6.4...v0.6.5) - 2026-03-24 + +### Added + +- Add AD (ChainRules/Mooncake/Enzyme) pullback rules for (anti-)hermitian projection ([#174](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/174)). +- Add `TruncationUnion` to support combining multiple truncation schemes by supplying minimal ranks ([#183](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/183)). +- Add `SafeDivideAndConquer` algorithm variant for more robust singular value decompositions ([#185](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/185)). +- Add `DefaultAlgorithm` type for explicit dispatch to the default algorithm ([#195](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/195)). + +### Changed + +- The default behavior of SVD-based nullspaces now includes some small tolerance ([#172](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/170)). +- The Mooncake rules for truncated decompositions with `TruncatedAlgorithm` now use the pullbacks that make use of the full decomposition. ([#171](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/171)) +- Default algorithms now defined for `SubArray` and `ReshapedArray` ([#182](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/182)). +- Separated `Algorithm` and `Driver` concepts for QR/LQ, SVD, and Schur/Eig decompositions ([#178](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/178), [#189](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/189), [#194](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/194), [#196](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/196)). + +### Fixed + - QR and LQ decompositions were supposed to default to `positive = true` ([#170](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/pull/170)). ## [0.6.4](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl/compare/v0.6.3...v0.6.4) - 2026-01-29 diff --git a/src/implementations/eigh.jl b/src/implementations/eigh.jl index ac7af8da3..30b14048a 100644 --- a/src/implementations/eigh.jl +++ b/src/implementations/eigh.jl @@ -100,7 +100,7 @@ end # ========================== for f! in (:heevr!, :heevd!, :heev!, :heevx!, :heevj!) - @eval $f!(driver::Driver, args...) = throw(ArgumentError("$driver does not provide $f!")) + @eval $f!(driver::Driver, args...) = throw(ArgumentError("$driver does not provide $($(f!))")) end # LAPACK implementations diff --git a/src/implementations/svd.jl b/src/implementations/svd.jl index cd0b43f75..3d20e96d4 100644 --- a/src/implementations/svd.jl +++ b/src/implementations/svd.jl @@ -121,7 +121,7 @@ end # ========================== for f! in (:gesdd!, :gesvd!, :gesvdj!, :gesvdp!, :gesvdx!, :gesvdr!, :gesdvd!) - @eval $f!(driver::Driver, args...) = throw(ArgumentError("$driver does not provide $f!")) + @eval $f!(driver::Driver, args...) = throw(ArgumentError("$driver does not provide $($(f!))")) end """