Skip to content

Commit f357c47

Browse files
authored
Accelerate isless(::T,::T) where {T<:CartesianIndex} (#43395)
1 parent bcb8a00 commit f357c47

File tree

1 file changed

+1
-7
lines changed

1 file changed

+1
-7
lines changed

base/multidimensional.jl

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,7 @@ module IteratorsMD
124124
@inline (*)(index::CartesianIndex, a::Integer) = *(a,index)
125125

126126
# comparison
127-
@inline isless(I1::CartesianIndex{N}, I2::CartesianIndex{N}) where {N} = _isless(0, I1.I, I2.I)
128-
@inline function _isless(ret, I1::Tuple{Int,Vararg{Int}}, I2::Tuple{Int,Vararg{Int}})
129-
newret = ifelse(ret==0, icmp(last(I1), last(I2)), ret)
130-
return _isless(newret, Base.front(I1), Base.front(I2))
131-
end
132-
_isless(ret, ::Tuple{}, ::Tuple{}) = ifelse(ret==1, true, false)
133-
icmp(a, b) = ifelse(isless(a,b), 1, ifelse(a==b, 0, -1))
127+
isless(I1::CartesianIndex{N}, I2::CartesianIndex{N}) where {N} = isless(reverse(I1.I), reverse(I2.I))
134128

135129
# conversions
136130
convert(::Type{T}, index::CartesianIndex{1}) where {T<:Number} = convert(T, index[1])

0 commit comments

Comments
 (0)