Skip to content

Releases: QuantumKitHub/MatrixAlgebraKit.jl

v0.6.9

Choose a tag to compare

@github-actions github-actions released this 12 Jul 20:55
7b5ec74

MatrixAlgebraKit v0.6.9

Diff since v0.6.8

Feature release introducing the matrix exponential function, and forward-mode AD rules for the decompositions.

Highlights

  • New exponential / exponential! matrix function with selectable algorithms: MatrixFunctionViaLA (Padé via LinearAlgebra), MatrixFunctionViaEig / MatrixFunctionViaEigh (via eigendecomposition), and DiagonalAlgorithm; also supports the scaled exponential((τ, A)) form (#94).
  • Native scaling-and-squaring Taylor algorithm MatrixFunctionViaTaylor — LAPACK-free, the default for dense matrices, and the only path covering arbitrary-precision element types such as BigFloat (#243).
  • Forward-mode (pushforward) AD rules for the polar, eig/eigh, and SVD decompositions plus the projection / orthnull functions, via the Enzyme and Mooncake extensions (#242, #244, #245, #247).

Full Changelog

See CHANGELOG for the complete list of changes.

Merged pull requests:

v0.6.8

Choose a tag to compare

@github-actions github-actions released this 02 Jun 22:46
33d77fd

MatrixAlgebraKit v0.6.8

Diff since v0.6.7

Bug-fix release addressing several pullback issues — GPU compatibility for svd_pullback!, eigh, and eig pullbacks, correct handling of fully truncated decompositions, a cotangent-mutation bug in the LQ pullback, and an Enzyme caching fix — plus an svd gauge-fixing performance improvement and a new project logo. (Shout-out to @VictorVanthilt)

Highlights

  • svd_pullback! now works on the GPU (#232).
  • eigh and eig pullbacks now work on CUDA arrays (#235, #236).
  • Pullbacks of eig_trunc, eigh_trunc, and svd_trunc no longer error when truncation keeps no values; the zero-rank case in svd_pullback! is also handled (#233).
  • LQ pullback no longer mutates the input cotangents (#226).
  • Corrected the Enzyme rule's check for when the cached output argument must be copied (#239).
  • Improved svd gauge-fixing performance (#238).
  • Extended AD test coverage to CUDA arrays for the polar decomposition and Mooncake projection rules (#237, #240).
  • New MatrixAlgebraKit logo (#230).

Full Changelog

See CHANGELOG for the complete list of changes.

Merged pull requests:

Closed issues:

  • SVD pullback rules aren't GPU-friendly (#228)
  • EIGH pullback rules aren't GPU-friendly (#229)

v0.6.7

Choose a tag to compare

@github-actions github-actions released this 07 May 17:32
4b19746

MatrixAlgebraKit v0.6.7

Diff since v0.6.6

A patch release with correctness fixes for AD pullbacks (eigenvalue gauge-fixing, LQ aliasing, Mooncake/Enzyme rules for Diagonal) and a new precompile workload to reduce time-to-first-execution.

Highlights

  • Improved consistency of gauge fixing in eigenvalue pullback functions (#221 + #224).
  • Ensure no sharing of data in LQ decomposition output (#219).
  • Mooncake and Enzyme AD rules now correctly handle Diagonal inputs (#179).
  • Added a rudimentary precompile workload to reduce time-to-first-execution (#217).

Full Changelog

See CHANGELOG for the complete list of changes.

Merged pull requests:

Closed issues:

  • Create methods such as qr_full!! to disambiguate input handling (#141)
  • Issue with LQ decomposition of JLMatrix in MatrixAlgebraKit v0.6.6 (#218)

v0.6.6

Choose a tag to compare

@github-actions github-actions released this 24 Apr 15:30
0d96b63

MatrixAlgebraKit v0.6.6

Diff since v0.6.5

This release fixes pullback correctness for rank-degenerate SVD cases and includes several internal reorganization improvements.

Highlights

  • Fixed rank-degenerate SVD pullbacks: Reorganized pullback implementations now correctly handle rank-degenerate SVD cases (#208).
  • New == for TruncationStrategy: Equality comparison is now supported for all TruncationStrategy types (#211).
  • CUDA compat bumped to v6: Older CUDA versions are no longer supported (#209).
  • Centralized QR/LQ gauge-fixing: Internal cleanup for more maintainable gauge-fix logic (#203).

Full Changelog

See CHANGELOG for the complete list of changes.

Closed issues:

  • svd_pullback doesn't handle output from svd_full (#96)
  • SVD pullback of rank-deficient matrix (#150)
  • Handling JLArrays.jl inputs (#202)

v0.6.5

Choose a tag to compare

@github-actions github-actions released this 25 Mar 14:18
e6e844f

MatrixAlgebraKit v0.6.5

Diff since v0.6.4

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 Diagonal in orthnull (#144) (@kshyatt)
  • Highlight usage of default_algorithm in decomposition documentation (#169) (@leburgel)
  • Change QR/LQ decompositions to use positive = true by default (#170) (@leburgel)
  • add specializations svd_trunc(!) for TruncatedAlgorithm (#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 Algorithm and Driver (#178) (@lkdvos)
  • Some changes to the ad test utils (#180) (@Jutho)
  • Define default algorithms for SubArray and ReshapedArray (#182) (@lkdvos)
  • Add TruncationUnion to 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 Algorithm and Driver - 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 Algorithm and Driver - part III (Schur-Eig) (#194) (@lkdvos)
  • Add DefaultAlgorithm (#195) (@lkdvos)
  • some more updates on algorithms (#196) (@Jutho)
  • Consistent ::AbstractMatrix annotations (#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 DefaultAlgorithm as a placeholder for postponing the selection of the default algorithm. (#31)
  • [AD] rrules for project_(anti)hermitian (#99)
  • right_null for a simple matrix (#166)
  • Add use of MatrixAlgebraKit.default_algorithm to decomposition documentation (#167)
  • Change default left_orth algorithm 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)

v0.6.4

Choose a tag to compare

@github-actions github-actions released this 30 Jan 14:11
8de569f

MatrixAlgebraKit v0.6.4

Diff since v0.6.3

Overview

This release focuses on improving automatic differentiation reliability, expanding test coverage for randomized algorithms, and maintaining compatibility with the latest dependencies. Key improvements include fixes for Mooncake AD rules, enhanced GPU support, and continued test infrastructure modernization.

Key Features

🎯 New Features

Test Coverage Expansion

• Added comprehensive tests for randomized SVD algorithms, improving test coverage for probabilistic matrix decompositions (#159)

🔧 Infrastructure Improvements

Dependency Updates & Testing

• Bumped Mooncake to v0.5 for improved reverse-mode automatic differentiation support (#164)
• Migrated automatic differentiation tests to the common TestSuite infrastructure for consistency and maintainability (#126)

🐛 Bug Fixes

Automatic Differentiation

• Fixed Mooncake AD rules to correctly set and reset inputs and outputs, ensuring proper gradient computation for in-place operations (#158)
• Fixed storage type retention in _ind_intersect for GPU array operations, improving compatibility with GPU-accelerated computations (#161)

Related Links

Merged Pull Requests

• Add tests/fixes for inplace rules (#158)
• Bump Mooncake v0.5 (#164)
• Use Testsuite for AD tests (#126)
• retain storagetype in _ind_intersect (#161)
• Add some tests for randomized SVD (#159)

Additional Resources

Full Changelog
Commit History

Merged pull requests:

Closed issues:

  • [Feature] Test suite (#91)

v0.6.3

Choose a tag to compare

@github-actions github-actions released this 23 Jan 18:51
579d792

MatrixAlgebraKit v0.6.3

Diff since v0.6.2

Overview

This release introduces native algorithm implementations, enhanced automatic differentiation support for Enzyme, improved handling of diagonal matrices, and modernized testing infrastructure.

Key Features

🎯 New Features

Native Algorithm Implementations

  • Added native implementations for QR and LQ decompositions, providing faster computation without external dependencies (#90)

Enhanced Automatic Differentiation

  • Implemented reverse-mode automatic differentiation rules for Enzyme, enabling AD through decompositions and matrix functions (#86)
  • Added pullback rules for Diagonal input matrices in eigenvalue and singular value decompositions, improving AD efficiency for sparse matrix operations (#156)

🔧 Infrastructure Improvements

Testing Infrastructure

  • Migrated test suite to use ParallelTestRunner for improved test execution performance (#155)

🐛 Bug Fixes

  • Eigenvalue decompositions of diagonal input matrices now correctly return sorted values with the same type as non-diagonal inputs, ensuring consistency across different input types (#151)
  • Fixed inconsistent checksquare usage across the codebase for better error handling (#154)
  • Corrected typos in error messages (#153)

Related Links

Merged pull requests:

Closed issues:

  • Should _trunc methods accept a Vector or Ref argument for the truncation error? (#102)
  • Get truncated methods working for GPU arrays (#138)

v0.6.2

Choose a tag to compare

@github-actions github-actions released this 08 Jan 17:01
91a8a69

MatrixAlgebraKit v0.6.2

Diff since v0.6.1

Compare: v0.6.1...v0.6.2
Date: 2026-01-08

Changed

  • Improved test infrastructure: migrated additional tests to the common TestSuite and added GPU/truncated-methods tests for SVD and related functionality (#137, #142, #146, #128).
  • Eigenvalue decompositions of diagonal inputs have the same sorting as non-diagonal inputs (#143

Fixed

  • Polar decompositions return exact hermitian factors (#143).
  • Fixed a small typo in TruncationByValue and related docstrings (#136).
  • YALAPACK fixes and test adjustments (#135).
  • Various truncation schemes are now better supported on GPU.

Merged pull requests:

Closed issues:

  • [Feature request] lq_null and qr_null for GenericFloats (#129)

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 28 Dec 14:25
b6eaf3d

MatrixAlgebraKit v0.6.1

Diff since v0.6.0

Compare: v0.6.0...v0.6.1
Date: 2025-12-28

Added

  • Support for null-space computation via Householder QR in the GenericLinearAlgebra extension (#132).
  • New truncated-eigensolver variants: eig_trunc_no_error and eigh_trunc_no_error (#117).
  • New truncated-singular value variant: svd_trunc_no_error to improve GPU synchronization and AD support (#116).
  • AD: ChainRules support for svd_vals, eig_vals, eigh_vals, and diagonal (#107).

Changed

  • Improved GPU compatibility for some wrapper arrays (#100).
  • Test infrastructure migrated to a common TestSuite to reduce duplication (#119, #130, #131, #127, #125, #123, #124).

Fixed

  • ishermitian now correctly handles all-zero matrices (#121).

Merged pull requests:

Closed issues:

  • [Autodiff] svd_vals is not differentiable (#88)
  • Memory optimizations for large-scale SVD on GPU (#111)
  • Further questions about truncation error reporting for svd_trunc! (#114)
  • check_hermitian fails for zero-matrix (#120)

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 14 Nov 22:44
eceef30

MatrixAlgebraKit v0.6.0

Diff since v0.5.0

We are pleased to announce the release of MatrixAlgebraKit.jl v0.6.0! This release brings significant new features, enhanced GPU support, and improved automatic differentiation capabilities.

🎉 Highlights

  • Expanded GPU Support: GPU acceleration for polar decomposition, projections, and orthogonal space computations
  • Mooncake AD Integration: New reverse-mode automatic differentiation rules using Mooncake.jl
  • BigFloat Support: Arbitrary precision computing via GenericLinearAlgebra extension
  • New Projection Operations: Introduction of project_isometric for manifold projections
  • Enhanced Matrix Properties: New functions for Hermitian and anti-Hermitian decomposition

✨ New Features

Matrix Projections

  • project_isometric - Project matrices onto the isometric manifold (#67)
  • PolarNewton - New Newton-iteration-based algorithm for polar decomposition (#67)

Matrix Property Functions

New functions for analyzing and manipulating matrix properties (#64):

  • ishermitian - Check if a matrix is Hermitian
  • isantihermitian - Check if a matrix is anti-Hermitian
  • hermitianpart! / hermitianpart - Extract Hermitian component (in-place and allocating)
  • antihermitianpart! / antihermitianpart - Extract anti-Hermitian component (in-place and allocating)

Extended Type Support

  • BigFloat precision through new GenericLinearAlgebra extension (#87)
  • GPU wrapper types now have default algorithm implementations (#49)

Automatic Differentiation

  • Mooncake.jl reverse-mode AD rules added (#85)

GPU Acceleration

Extended GPU support across multiple operations:

  • Image and null space computations (#82)
  • Polar decomposition (#83)
  • Projection operations (#81)
  • Improved SVD operations (#80)

Truncation Features

  • Truncation error output for truncated decompositions (#75)
  • Enhanced documentation for truncated decomposition keyword arguments (#71)

🔄 Breaking Changes

Renamed Functions

  • isisometryisisometric for consistency with project_isometric (#73)

Interface Changes

  • Refactored interface for left_orth, right_orth, left_null, and right_null (#79)

🔧 Improvements

Behavior Changes

  • Optional gauge fixing - gaugefix! is now optional (#95)
  • Relaxed Hermitian checks - Loosened strictness on hermiticity checks (#78)
  • Updated pullback tolerances for improved numerical stability when the input norms are large or small (#92)

📦 Dependencies

New Extensions

  • MatrixAlgebraKitGenericLinearAlgebraExt - BigFloat support
  • MatrixAlgebraKitGenericSchurExt - BigFloat support
  • MatrixAlgebraKitMooncakeExt - Mooncake AD integration

Compatibility

  • Julia: 1.10+
  • AMDGPU: 2
  • CUDA: 5
  • ChainRulesCore: 1
  • GenericLinearAlgebra: 0.3.19+
  • GenericSchur: 0.5.6+
  • Mooncake: 0.4.174+

🙏 Acknowledgments

Thank you to all contributors who made this release possible! Special thanks to those who submitted pull requests, reported issues, and participated in discussions.

📚 Documentation

For detailed documentation, please visit:

🔗 Links


For any issues or questions, please file an issue on our GitHub repository.

Merged pull requests:

  • Updates for TensorKit compatibility (#49) (@kshyatt)
  • [Feature] Add ishermitian, isantihermitian, hermitianpart(!) and antihermitianpart(!) (#64) (@lkdvos)
  • [Features] project_isometric and PolarNewton (#67) (@Jutho)
  • remove additional unnecessary ::AbstractMatrix annotation (#70) (@lkdvos)
  • Add documentation for truncated decomposition keyword arguments (#71) (@Copilot)
  • Rename isisometry to isisometric for consistency with project_isometric (#73) (@Copilot)
  • Output truncation error for truncated decompositions (#75) (@Jutho)
  • Loosen strictness on hermitian checks (#78) (@lkdvos)
  • Refactor orthogonalization and nullspace interface (#79) (@lkdvos)
  • GPU improvements for SVD (#80) (@kshyatt)
  • Support new projections on GPU (#81) (@kshyatt)
  • Add tests for image and null space for GPU (#82) (@kshyatt)
  • Add tests for polar decomposition for GPU (#83) (@kshyatt)
  • Mooncake reverse rules (#85) (@kshyatt)
  • add support for BigFloats via a new extension (#87) (@sanderdemeyer)
  • update pullback tolerances (#92) (@lkdvos)
  • Make gaugefix! optional (#95) (@lkdvos)
  • Release v0.6 + small fixes (#97) (@lkdvos)

Closed issues:

  • safe_inv should have a different tol from pullback_gaugetol (#7)
  • [Feature request] Add support for BigFloats (#8)
  • Support passing Hermitian matrix to eigh_x (#35)
  • left_orth and right_orth interface improvements (#66)
  • Document how to pass a truncation strategy to a truncated factorization (and other kwarg mysteries) (#68)
  • Rename isisometry to isisometric (#69)
  • Reinstate outputting the truncation error for truncated decompositions (#72)
  • Necessity of the hard symmetry/hermiticity checks in eigh(!) decompositions (#76)
  • [Bug] SVD pullback does not properly take into account the norm of the initial matrix (#89)