MWE (fails in current Julia nightly 1.14)
julia> eigsolve([1 0; 0 1])
ERROR: DimensionMismatch: subdiagonal has wrong length. Has length 1, but should be 0.
Stacktrace:
[1] LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}(dv::Vector{Float64}, ev::Vector{Float64})
@ LinearAlgebra ~/.julia/juliaup/julia-nightly/Julia-1.14.app/Contents/Resources/julia/share/julia/stdlib/v1.14/LinearAlgebra/src/tridiag.jl:12 [inlined]
[2] (LinearAlgebra.SymTridiagonal{Float64, V} where V<:AbstractVector{Float64})(dv::Vector{Float64}, ev::Vector{Float64})
@ LinearAlgebra ~/.julia/juliaup/julia-nightly/Julia-1.14.app/Contents/Resources/julia/share/julia/stdlib/v1.14/LinearAlgebra/src/tridiag.jl:71 [inlined]
[3] LinearAlgebra.SymTridiagonal(dv::Vector{Float64}, ev::Vector{Float64})
@ LinearAlgebra ~/.julia/juliaup/julia-nightly/Julia-1.14.app/Contents/Resources/julia/share/julia/stdlib/v1.14/LinearAlgebra/src/tridiag.jl:70 [inlined]
[4] rayleighquotient(F::KrylovKit.LanczosFactorization{Vector{Float64}, Float64})
@ Main ./REPL[2]:1
[5] eigsolve(A::Matrix{Int64}, x₀::Vector{Int64}, howmany::Int64, which::Symbol, alg::Lanczos{ModifiedGramSchmidt2, Float64}; alg_rrule::Arnoldi{ModifiedGramSchmidt2, Float64})
@ KrylovKit ~/.julia/packages/KrylovKit/nyPcr/src/eigsolve/lanczos.jl:48
[6] eigsolve
@ ~/.julia/packages/KrylovKit/nyPcr/src/eigsolve/lanczos.jl:1 [inlined]
[7] rand!(A::Vector{Int64}, ::Type{Int64})
@ Random ~/.julia/packages/KrylovKit/nyPcr/src/eigsolve/eigsolve.jl:235 [inlined]
[8] rand!(A::Vector{Int64})
@ Random ~/.julia/packages/KrylovKit/nyPcr/src/eigsolve/eigsolve.jl:209 [inlined]
[9] eigsolve(A::Matrix{Int64}, howmany::Int64, which::Symbol, T::Type{Int64}; kwargs::@Kwargs{})
@ KrylovKit ~/.julia/packages/KrylovKit/nyPcr/src/eigsolve/eigsolve.jl:200 [inlined]
[10] eigsolve(A::Matrix{Int64}, howmany::Int64, which::Symbol, T::Type{Int64})
@ KrylovKit ~/.julia/packages/KrylovKit/nyPcr/src/eigsolve/eigsolve.jl:195 [inlined]
[11] top-level scope
@ REPL[3]:1
This doesn't fail in 1.13 or earlier. The reason is that in those versions SymTridiagonal(diagonal,subdiagonal) happily returns a matrix even if subdiagonal and diagonal lengths are inconsistent. In 1.14 it is no longer true. KrylovKit relies on the old behavior, which should be considered a bug.
MWE (fails in current Julia nightly 1.14)
This doesn't fail in 1.13 or earlier. The reason is that in those versions
SymTridiagonal(diagonal,subdiagonal)happily returns a matrix even if subdiagonal and diagonal lengths are inconsistent. In 1.14 it is no longer true. KrylovKit relies on the old behavior, which should be considered a bug.