@@ -336,15 +336,17 @@ end
336336function == (A:: AbstractMatrix , J:: UniformScaling )
337337 require_one_based_indexing (A)
338338 size (A, 1 ) == size (A, 2 ) || return false
339- iszero (J. λ) && return iszero (A)
340- isone (J. λ) && return isone (A)
341- isdiag (A) || return false
342- return all (== (J. λ), diagview (A))
339+ isempty (A) && return true
340+ # Check that the elements of A are equal to those of J,
341+ # this ensures that if A == J, their elements are equal as well
342+ iszero (J. λ) && return first (A) == J. λ && iszero (A)
343+ isone (J. λ) && return first (A) == J. λ && isone (A)
344+ return _isequalto_uniformscaling (A, J)
343345end
344- function == (A:: StridedMatrix , J:: UniformScaling )
345- size (A, 1 ) == size (A, 2 ) || return false
346- iszero (J . λ) && return iszero (A)
347- isone (J . λ) && return isone (A )
346+ function _isequalto_uniformscaling (A:: AbstractMatrix , J:: UniformScaling )
347+ return isdiag (A) && all ( == (J . λ), diagview (A))
348+ end
349+ function _isequalto_uniformscaling (A :: StridedMatrix , J :: UniformScaling )
348350 for j in axes (A, 2 ), i in axes (A, 1 )
349351 ifelse (i == j, A[i, j] == J. λ, iszero (A[i, j])) || return false
350352 end
0 commit comments