Skip to content

Bug: SymTridiagonal called with wrong parameters, fails on julia 1.14 #156

@pablosanjose

Description

@pablosanjose

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions