File tree Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -4,15 +4,17 @@ module ULPError
4
4
throw (ArgumentError (" invalid" ))
5
5
end
6
6
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
13
7
# the ULP error is usually not required to great accuracy, so `Float32` should be precise enough
14
8
zero_return = Float32 (0 )
15
9
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
16
18
if isinf (accurate) || iszero (accurate) # handle floating-point edge cases
17
19
if isinf (accurate)
18
20
if isinf (approximate) && (signbit (accurate) == signbit (approximate))
You can’t perform that action at this time.
0 commit comments