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 @@ -6,15 +6,17 @@ module ULPError
6
6
throw (ArgumentError (" invalid" ))
7
7
end
8
8
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
15
9
# the ULP error is usually not required to great accuracy, so `Float32` should be precise enough
16
10
zero_return = Float32 (0 )
17
11
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
18
20
if isinf (accurate) || iszero (accurate) # handle floating-point edge cases
19
21
if isinf (accurate)
20
22
if isinf (approximate) && (signbit (accurate) == signbit (approximate))
You can’t perform that action at this time.
0 commit comments