Skip to content

Commit ff7a896

Browse files
committed
fix chisq_dist(0, 0)
fixes #59
1 parent fcb23f5 commit ff7a896

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

src/metrics.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ corr_dist(a::AbstractArray, b::AbstractArray) = evaluate(CorrDist(), a, b)
239239
result_type(::CorrDist, a::AbstractArray, b::AbstractArray) = result_type(CosineDist(), a, b)
240240

241241
# ChiSqDist
242-
@inline eval_op(::ChiSqDist, ai, bi) = abs2(ai - bi) / (ai + bi)
242+
@inline eval_op(::ChiSqDist, ai, bi) = ifelse(ai != bi, abs2(ai - bi) / (ai + bi), zero(ai))
243243
@inline eval_reduce(::ChiSqDist, s1, s2) = s1 + s2
244244
chisq_dist(a::AbstractArray, b::AbstractArray) = evaluate(ChiSqDist(), a, b)
245245

test/test_dists.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ end
161161
@test wminkowski(x, y, w, 2) weuclidean(x, y, w)
162162
end
163163

164+
# Test ChiSq doesn't give NaN at zero
165+
@test chisq_dist([0.0], [0.0]) == 0.0
164166

165167
# Test weighted Hamming distances with even weights
166168
a = T.([1.0, 2.0, 1.0, 3.0, 2.0, 1.0])

0 commit comments

Comments
 (0)