Skip to content

Commit 0a6d242

Browse files
committed
don't propagate NaN/Inf if Partials are zero
1 parent 43ee7d8 commit 0a6d242

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

src/partials.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,13 @@ Base.convert{N,T}(::Type{Partials{N,T}}, partials::Partials{N,T}) = partials
7575
@inline @compat(Base.:+){N}(a::Partials{N}, b::Partials{N}) = Partials(add_tuples(a.values, b.values))
7676
@inline @compat(Base.:-){N}(a::Partials{N}, b::Partials{N}) = Partials(sub_tuples(a.values, b.values))
7777
@inline @compat(Base.:-)(partials::Partials) = Partials(minus_tuple(partials.values))
78-
@inline @compat(Base.:*)(partials::Partials, x::Real) = Partials(scale_tuple(partials.values, x))
79-
@inline @compat(Base.:*)(x::Real, partials::Partials) = partials*x
8078
@inline @compat(Base.:/)(partials::Partials, x::Real) = Partials(div_tuple_by_scalar(partials.values, x))
79+
@inline @compat(Base.:*)(x::Real, partials::Partials) = partials*x
80+
81+
@inline function @compat(Base.:*)(partials::Partials, x::Real)
82+
y = ifelse((isnan(x) || isinf(x)) && iszero(partials), one(x), x)
83+
return Partials(scale_tuple(partials.values, y))
84+
end
8185

8286
@inline function _mul_partials{N}(a::Partials{N}, b::Partials{N}, afactor, bfactor)
8387
return Partials(mul_tuples(a.values, b.values, afactor, bfactor))

0 commit comments

Comments
 (0)