Diffractor.jl icon indicating copy to clipboard operation
Diffractor.jl copied to clipboard

Fix `rrule_via_ad` return type

Open mcabbott opened this issue 3 years ago • 0 comments
trafficstars

This ought to return a tuple; what it returns now works in some contexts but not https://github.com/JuliaDiff/ChainRules.jl/pull/644 .

julia> using Diffractor, ChainRulesCore

julia> ret = rrule_via_ad(Diffractor.DiffractorRuleConfig(), x -> log(exp(x)), 2)
Diffractor.OpticBundle{Float64}(2.0, (::Any)::Tuple{ZeroTangent, Any}->◌)

julia> y, bk = ret;  # ok

julia> Tuple(ret)
ERROR: MethodError: no method matching length(::Diffractor.OpticBundle{Float64})

Originally added in https://github.com/JuliaDiff/Diffractor.jl/pull/45, thus my fault...

mcabbott avatar Aug 18 '22 14:08 mcabbott