You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The problem is as in the title. In short, isposdef method for Eigen factorization is incorrect. It does not check for hermiticity/symmetricity and only looks at the eigenvalues, which is of course not enough.
using LinearAlgebra
T =UpperTriangular(rand(3, 3) .+1)
isposdef(T) # Falseisposdef(eigen(T)) # True
Best!
Version info
Julia Version 1.11.3
Commit d63adeda50d (2025-01-21 19:42 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 16 × AMD Ryzen 9 5900HX with Radeon Graphics
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)
Environment:
JULIA_PROJECT = @.
JULIA_PKG_PRESERVE_TIERED_INSTALLED = true
JULIA_REVISE = manual
The text was updated successfully, but these errors were encountered:
I suspect this is a matter of documentation, like saying that isposdef(E::Eigen) only checks for real and positive eigenvalues, assuming that E is the eigendecomposition of a self-adjoint matrix ("RealHermOrSymComplexHerm"). I don't know how one would check for symmetry: any such check would be subject to floating point inaccuracies, so likely V'V is not the identity, and/or V'Diagonal(evals)*V is not symmetric/Hermitian. I vaguely remember, however, that there was some effort to store that piece of information (whether E is the eigendecomposition of a self-adjoint matrix).
Hi,
The problem is as in the title. In short,
isposdef
method forEigen
factorization is incorrect. It does not check for hermiticity/symmetricity and only looks at the eigenvalues, which is of course not enough.Best!
Version info
The text was updated successfully, but these errors were encountered: