Skip to content

Commit

Permalink
Omega and Turing fix
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeInnes committed Oct 23, 2018
1 parent cb773e5 commit 96dbae2
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/tracker/scalar.jl
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,18 @@ for (M, f, arity) in DiffRules.diffrules()
end
end

# Work around zero(π) not working, for some reason
_zero(::Irrational) = nothing
_zero(x) = zero(x)

for (M, f, arity) in DiffRules.diffrules()
arity == 2 || continue
da, db = DiffRules.diffrule(M, f, :a, :b)
f = :($M.$f)
@eval begin
@grad $f(a::TrackedReal, b::TrackedReal) = $f(data(a), data(b)), Δ ->* $da, Δ * $db)
@grad $f(a::TrackedReal, b::Real) = $f(data(a), b), Δ ->* $da, zero(b))
@grad $f(a::Real, b::TrackedReal) = $f(a, data(b)), Δ -> (zero(a), Δ * $db)
@grad $f(a::TrackedReal, b::Real) = $f(data(a), b), Δ ->* $da, _zero(b))
@grad $f(a::Real, b::TrackedReal) = $f(a, data(b)), Δ -> (_zero(a), Δ * $db)
$f(a::TrackedReal, b::TrackedReal) = track($f, a, b)
$f(a::TrackedReal, b::Real) = track($f, a, b)
$f(a::Real, b::TrackedReal) = track($f, a, b)
Expand Down

0 comments on commit 96dbae2

Please sign in to comment.