v0.5.0
In a nutshell
Implicit functions have become more flexible:
- byproducts are optional, and handled automatically via dispatch
- additional positional arguments are supported but not differentiated
- the conditions can be differentiated using a different backend
The linear solver has been generalized:
- it can be chosen among "implicit" and "direct"
- the direct linear solver caches the LU factorization for each pullback or pushforward
- it returns
NaN
s when the solve fails instead of erroring
General reliability of the package has improved thanks to extensive testing:
- with standard arrays, static arrays and sparse arrays (experimental)
- leveraging ChainRulesTestUtils.jl
See the brand new FAQ page in the docs for more details.
What's Changed
- Return the output only from ImplicitFunction not the byproduct by default by @mohamed82008 in #56
- No differentiating byproducts by @gdalle in #61
- No byproduct by default by @mohamed82008 in #57
- cache the LU factorisation in the direct linear solver and better static array support by @mohamed82008 in #64
- test the output type of the forward function when a byproduct exists by @mohamed82008 in #76
- Fix docs and change constructor by @gdalle in #81
- NaNs for linear solvers when failed by @gdalle in #83
- Add precompilation workflows for ForwardDiff and Zygote by @gdalle in #85
- Transparent handling of byproduct by @gdalle in #86
- Customize backend for conditions by @gdalle in #87
- Fix wrong nb of pullbacks by @gdalle in #91
- Accept nondifferentiated args by @thorek1 in #89
- Copy README into docs by @gdalle in #93
- Add warning when linear solver returns NaNs by @gdalle in #94
- Add benchmarks by @gdalle in #95
- Add warning for sparse arrays by @gdalle in #96
- Fix some issues related to sparse and static arrays by @gdalle in #97
- Plotting benchmarks by @gdalle in #99
- Performance fixes by @gdalle in #100
- Shorten code by @gdalle in #102
- Verbose or not for solver by @gdalle in #103
- 2d benchmarks by @gdalle in #104
- Output size is kwarg in benchmarks by @gdalle in #105
- Back to b linop by @gdalle in #106
- Add judgement script by @gdalle in #110
- Test different shapes for x and y by @gdalle in #109
- Dense jacobians by @gdalle in #111
- Better document test_rrule tweak by @gdalle in #113
- Simpler tests that work with SparseArrays by @gdalle in #114
- Bump version to 0.5.0 by @gdalle in #115
New Contributors
Full Changelog: v0.4.4...v0.5.0