Skip to content

Commit 1393310

Browse files
authored
fix logdet(Diagonal{<:Real}) with negative entries (#39158)
1 parent 8937f7e commit 1393310

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

stdlib/LinearAlgebra/src/diagonal.jl

-1
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,6 @@ function diag(D::Diagonal, k::Integer=0)
595595
end
596596
tr(D::Diagonal) = sum(tr, D.diag)
597597
det(D::Diagonal) = prod(det, D.diag)
598-
logdet(D::Diagonal{<:Real}) = sum(log, D.diag)
599598
function logdet(D::Diagonal{<:Complex}) # make sure branch cut is correct
600599
z = sum(log, D.diag)
601600
complex(real(z), rem2pi(imag(z), RoundNearest))

stdlib/LinearAlgebra/test/diagonal.jl

+2
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,8 @@ Random.seed!(1)
361361
d2, s2 = logabsdet(lM)
362362
@test d1 d2
363363
@test s1 == s2
364+
@test logdet(Diagonal(relty[-1,-2])) log(2)
365+
@test_throws DomainError logdet(Diagonal(relty[-1,-2,-3]))
364366
end
365367

366368
@testset "similar" begin

0 commit comments

Comments
 (0)