Diffractor

Next-generation AD

PDF containing the terminology

Getting Started

⚠️This certainly has bugs and issues. Please open issues on Diffractor.jl, or AbstractDifferentiation.jl as appropriate.⚠️

Diffractor's public API is via AbstractDifferentiation.jl. Please see the AbstractDifferentiation.jl docs for detailed usage.

julia> using Diffractor: DiffractorForwardBackend

julia> using AbstractDifferentiation: derivative, jacobian

julia> derivative(DiffractorForwardBackend(), +, 1.5, 10.0)
(1.0, 1.0)

julia> derivative(DiffractorForwardBackend(), *, 1.5, 10.0)
(10.0, 1.5)

julia> jacobian(DiffractorForwardBackend(), prod, [1.5, 2.5, 10.0]) |> only
1×3 Matrix{Float64}:
 25.0  15.0  3.75

julia> jacobian(DiffractorForwardBackend(), identity, [1.5, 2.5, 10.0]) |> only
3×3 Matrix{Float64}:
 1.0  0.0  0.0
 0.0  1.0  0.0
 0.0  0.0  1.0