Skip to content

Commit edeb002

Browse files
authored
fix fallback floating-point isless for -NaN, NaN (#25376)
1 parent 068f94b commit edeb002

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

base/operators.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,9 @@ values such as `NaN`.
121121
"""
122122
function isless end
123123

124-
isless(x::AbstractFloat, y::AbstractFloat) = (!isnan(x) & isnan(y)) | signless(x, y) | (x < y)
125-
isless(x::Real, y::AbstractFloat) = (!isnan(x) & isnan(y)) | signless(x, y) | (x < y)
126-
isless(x::AbstractFloat, y::Real ) = (!isnan(x) & isnan(y)) | signless(x, y) | (x < y)
124+
isless(x::AbstractFloat, y::AbstractFloat) = (!isnan(x) & (isnan(y) | signless(x, y))) | (x < y)
125+
isless(x::Real, y::AbstractFloat) = (!isnan(x) & (isnan(y) | signless(x, y))) | (x < y)
126+
isless(x::AbstractFloat, y::Real ) = (!isnan(x) & (isnan(y) | signless(x, y))) | (x < y)
127127

128128

129129
function ==(T::Type, S::Type)

test/mpfr.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,13 @@ end
490490
# total ordering
491491
@test isless(big(-0.0), big(0.0))
492492
@test isless(big(1.0), big(NaN))
493+
@test isless(big(Inf), big(NaN))
494+
@test isless(big(Inf), -big(NaN))
495+
@test !isless(big(NaN), big(NaN))
496+
@test !isless(big(-NaN), big(NaN))
497+
@test !isless(-big(NaN), big(NaN))
498+
@test !isless(-big(NaN), big(1.0))
499+
@test !isless(-big(NaN), 1.0)
493500

494501
# cmp
495502
@test cmp(big(-0.0), big(0.0)) == -1

test/numbers.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,6 +720,8 @@ end
720720
@test !isless(+NaN,+Inf)
721721
@test !isless(+NaN,-NaN)
722722
@test !isless(+NaN,+NaN)
723+
@test !isless(+NaN,1)
724+
@test !isless(-NaN,1)
723725

724726
@test isequal( 0, 0.0)
725727
@test isequal( 0.0, 0)

0 commit comments

Comments
 (0)