@@ -347,15 +347,17 @@ end
347347function == (A:: AbstractMatrix , J:: UniformScaling )
348348 require_one_based_indexing (A)
349349 size (A, 1 ) == size (A, 2 ) || return false
350- iszero (J. λ) && return iszero (A)
351- isone (J. λ) && return isone (A)
352- isdiag (A) || return false
353- return all (== (J. λ), diagview (A))
350+ isempty (A) && return true
351+ # Check that the elements of A are equal to those of J,
352+ # this ensures that if A == J, their elements are equal as well
353+ iszero (J. λ) && return first (A) == J. λ && iszero (A)
354+ isone (J. λ) && return first (A) == J. λ && isone (A)
355+ return _isequalto_uniformscaling (A, J)
354356end
355- function == (A:: StridedMatrix , J:: UniformScaling )
356- size (A, 1 ) == size (A, 2 ) || return false
357- iszero (J . λ) && return iszero (A)
358- isone (J . λ) && return isone (A )
357+ function _isequalto_uniformscaling (A:: AbstractMatrix , J:: UniformScaling )
358+ return isdiag (A) && all ( == (J . λ), diagview (A))
359+ end
360+ function _isequalto_uniformscaling (A :: StridedMatrix , J :: UniformScaling )
359361 for j in axes (A, 2 ), i in axes (A, 1 )
360362 ifelse (i == j, A[i, j] == J. λ, iszero (A[i, j])) || return false
361363 end
0 commit comments