Lineax Versions Save

Linear solvers in JAX and Equinox. https://docs.kidger.site/lineax

v0.0.5

1 month ago

Features

  • Added full complex support to the whole library! A huge thanks goes out to @Randl, who has been tirelessly pushing this all the way through. At this point Lineax should now support complex numbers across all of its interfaces. (#64, #89, #90, #91, #92, #93)
  • Added a flag to lx.JacobianLinearOperator for whether to use jacfwd or jacrev. (Thanks @thibmonsel! #75)

## Bugfixes

  • grad-of-vmap-of-<lx.linear_solve with only some outputs used> will no longer crash during tracing. (#84)
  • Fixed the runtime lineax.__version__ being pinned to 0.0.1.

New Contributors

Full Changelog: https://github.com/patrick-kidger/lineax/compare/v0.0.4...v0.0.5

v0.0.4

5 months ago

We now have a paper on arXiv!

Features

  • Experimental support for complex numbers. (Thanks @Randl!) These probably aren't 100% bug-free yet, but most of the work has now been done. Please report any issues!
    • Added lineax.conj which computes the conjugate of an operator. (E.g. for a matrix A, it returns A-bar.)
    • Added lineax.AbstractLinearSolver.conj, which conjugates the result of lineax.AbstractLinearSolver.init.
    • Both of the above should be implemented when adding a new operator a new solver respectively.

Bugfixes

  • Fixed PyTreeLinearOperator.as_matrix returning the wrong output if the pytree was of zero size.
  • Added lineax.internal.{max_norm, rms_norm, two_norm, sum_squares, tree_dot, default_floating_dtype}. (Being in the internal namespace means that these are undocumented/experimental, and may move somewhere else in the future.)

Internal changes

Now using ruff-format!

New Contributors

Full Changelog: https://github.com/google/lineax/compare/v0.0.3...v0.0.4

v0.0.3

7 months ago

This is a minor bugfix release.

  • Fixed a crash when differentiating lineax.linear_solve but leaving some outputs unused. (Specifically, when we get symbolic zero cotangents.) (#49)
  • Fixed a crash when using pytrees with lineax.CG. (#49)
  • Several fixes for lineax.IdentityLinearOperator with different input/output structures. (#50)

Full Changelog: https://github.com/google/lineax/compare/v0.0.2...v0.0.3

v0.0.2

8 months ago

Minor release, just tweaking a few things.

  • Fixed all the warnings that get printed out using Lineax v0.0.1 with Equinox v0.11.0. (Equinox is correctly shouting at us that we screwed up by defining both __init__ and __post_init__.)
  • IdentityLinearOperator(structure) is now IdentityLinearOperator(input_structure, output_structure), to support differing input/output structures.
  • Linear operators now treat their tags (for symmetry/positive-definite-ness/etc.) as static fields. This means that e.g. operators can now be used as the carry in a lax.scan.
  • lineax.SVD() now no longer returns NaNs when given a matrix of all zeros. (This is also an improvement over core JAX, which does not handle this case.)
  • Some performance improvements to autodiff-of-linear_solve.
  • Fixed autodiff-of-linear_solve crashing in a handful of edge cases. (When JAX passed symbolic zeros for AD.)
  • Many documentation fixes.

New Contributors

Full Changelog: https://github.com/google/lineax/compare/v0.0.1...v0.0.2