Skip to content

Commit 30430c4

Browse files
committed
update ULPError
1 parent 3656499 commit 30430c4

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

test/common/ULPError.jl

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

0 commit comments

Comments
 (0)