@@ -347,15 +347,17 @@ end
347
347
function == (A:: AbstractMatrix , J:: UniformScaling )
348
348
require_one_based_indexing (A)
349
349
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)
354
356
end
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 )
359
361
for j in axes (A, 2 ), i in axes (A, 1 )
360
362
ifelse (i == j, A[i, j] == J. λ, iszero (A[i, j])) || return false
361
363
end
0 commit comments