diff --git a/Hamiltonian.jl b/Hamiltonian.jl index ce0542f..c99b3ea 100644 --- a/Hamiltonian.jl +++ b/Hamiltonian.jl @@ -131,7 +131,7 @@ end tolerance = 1e-6 "Wrapper for KrylovKit.eigsolve" -function eig(H::Hamiltonian{T}, levels::Int; resonances = !H.hermitian)::Tuple{Vector{Complex{T}},Any,Any} where {T<:Float} +function eig(H::Hamiltonian{T}, levels::Int; resonances = !H.hermitian)::Tuple{Vector,Vector,KrylovKit.ConvergenceInfo} where {T<:Float} if H.mode == cpu_tensor x₀ = rand(Complex{T}, vectorDims(H)...) elseif H.mode == gpu_cutensor @@ -140,5 +140,6 @@ function eig(H::Hamiltonian{T}, levels::Int; resonances = !H.hermitian)::Tuple{V end evals, evecs, info = eigsolve(H, x₀, levels, resonances ? :LI : :SR; ishermitian = H.hermitian, tol = tolerance) resonances || info.converged < levels && throw(error("Not enough convergence")) # don't check convergence for resonances + if H.hermitian evals = real.(evals) end return evals, evecs, info end