Logabsdet(singular)

I have lots of matrices with very small positive eigenvalues. In Julia 0.6 I was calling ld, s = logabsdet(m), but updating to v0.7, this now gives an error when det(m)==0. (It’s not physically zero, just numerical precision.)

Is this the desired behaviour? I would have thought that the purpose of logabsdet(m) was precisely for cases like this.

for i=1:10
    v = rand(4)
    m = v .* v'
    @show det(m)   ## zero about one in ten times...
    @show logabsdet(m)   ##   ... then error in v0.7
end

The error is

ERROR: SingularException(20)
Stacktrace:
 [1] checknonsingular at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v0.7/LinearAlgebra/src/factorization.jl:12 [inlined]
 [2] #lu!#97(::Bool, ::Function, ::Array{Float64,2}, ::Val{true}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v0.7/LinearAlgebra/src/lu.jl:41

This is a bug that was introduced in v0.7/v1.0.0 (logabsdet fails for singular matrices · Issue #28619 · JuliaLang/julia · GitHub) but a fix (https://github.com/JuliaLang/julia/pull/28620) will be in Juila v1.0.1.

Ah good, that’s perfect, thanks!