Skip to content

Commit bfb32aa

Browse files
committed
ULPError simplification as per Oscar's suggestion
1 parent bc01591 commit bfb32aa

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

test/testhelpers/ULPError.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ module ULPError
66
throw(ArgumentError("invalid"))
77
end
88
function ulp_error(accurate::AbstractFloat, approximate::AbstractFloat)
9-
if isnan(accurate)
10-
@noinline throw_invalid()
11-
end
12-
if isnan(approximate)
13-
@noinline throw_invalid()
14-
end
159
# the ULP error is usually not required to great accuracy, so `Float32` should be precise enough
1610
zero_return = Float32(0)
1711
inf_return = Float32(Inf)
12+
let accur_is_nan = isnan(accurate), approx_is_nan = isnan(approximate)
13+
if accur_is_nan || approx_is_nan
14+
if accur_is_nan === approx_is_nan
15+
return zero_return
16+
end
17+
return inf_return
18+
end
19+
end
1820
if isinf(accurate) || iszero(accurate) # handle floating-point edge cases
1921
if isinf(accurate)
2022
if isinf(approximate) && (signbit(accurate) == signbit(approximate))

0 commit comments

Comments
 (0)