Skip to content

Commit 5991853

Browse files
committed
tr, and tests
1 parent dc2eeb3 commit 5991853

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

stdlib/LinearAlgebra/src/uniformscaling.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,14 @@ function det(J::UniformScaling{T}) where T
161161
end
162162
end
163163

164+
function tr(J::UniformScaling{T}) where T
165+
if iszero(J.λ)
166+
zero(T)
167+
else
168+
throw(ArgumentError("Trace of UniformScaling is only well-defined when λ = 0"))
169+
end
170+
end
171+
164172
*(J1::UniformScaling, J2::UniformScaling) = UniformScaling(J1.λ*J2.λ)
165173
*(B::BitArray{2}, J::UniformScaling) = *(Array(B), J::UniformScaling)
166174
*(J::UniformScaling, B::BitArray{2}) = *(J::UniformScaling, Array(B))

stdlib/LinearAlgebra/test/uniformscaling.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,11 @@ end
126126
@test (2I)^α == (2I).^α == (2^α)I
127127
end
128128

129-
@testset "det and logdet" begin
129+
@testset "tr, det and logdet" begin
130+
for T in (Int, Float64, ComplexF64, Bool)
131+
@test tr(UniformScaling(zero(T))) === zero(T)
132+
end
133+
@test_throws ArgumentError tr(UniformScaling(1))
130134
@test det(I) === true
131135
@test det(1.0I) === 1.0
132136
@test det(0I) === 0

0 commit comments

Comments
 (0)