Skip to content

Commit 4913a26

Browse files
dlfivefiftystaticfloat
authored andcommitted
Fix eigvals(:::SymTridagonal) with longer off-diagonal vector (#40165)
(cherry picked from commit 5b7f4c5)
1 parent 7aba6e0 commit 4913a26

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

stdlib/LinearAlgebra/src/lapack.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3770,8 +3770,8 @@ for (stev, stebz, stegr, stein, elty) in
37703770
require_one_based_indexing(dv, ev)
37713771
chkstride1(dv, ev)
37723772
n = length(dv)
3773-
if length(ev) != n - 1
3774-
throw(DimensionMismatch("ev has length $(length(ev)) but needs one less than dv's length, $n)"))
3773+
if length(ev) != n - 1 && length(ev) != n
3774+
throw(DimensionMismatch("ev has length $(length(ev)) but needs one less than or equal to dv's length, $n)"))
37753775
end
37763776
Zmat = similar(dv, $elty, (n, job != 'N' ? n : 0))
37773777
work = Vector{$elty}(undef, max(1, 2n-2))

stdlib/LinearAlgebra/test/lapack.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ end
407407
@testset for elty in (Float32, Float64)
408408
d = rand(elty,10)
409409
e = rand(elty,9)
410-
@test_throws DimensionMismatch LAPACK.stev!('U',d,rand(elty,10))
410+
@test_throws DimensionMismatch LAPACK.stev!('U',d,rand(elty,11))
411411
@test_throws DimensionMismatch LAPACK.stebz!('A','B',zero(elty),zero(elty),0,0,-1.,d,rand(elty,10))
412412
@test_throws DimensionMismatch LAPACK.stegr!('N','A',d,rand(elty,11),zero(elty),zero(elty),0,0)
413413
@test_throws DimensionMismatch LAPACK.stein!(d,zeros(elty,11),zeros(elty,10),zeros(BlasInt,10),zeros(BlasInt,10))

stdlib/LinearAlgebra/test/tridiag.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ end
584584
A2 = SymTridiagonal(fill(1.0, 3), fill(-1.0, 2))
585585
F2 = eigen(A2)
586586
test_approx_eq_modphase(F.vectors, F2.vectors)
587-
@test F.values F2.values
587+
@test F.values F2.values eigvals(A) eigvals(A2)
588588
@test eigvecs(A) eigvecs(A2)
589589
@test eigvecs(A, eigvals(A)[1:1]) eigvecs(A2, eigvals(A2)[1:1])
590590
end

0 commit comments

Comments
 (0)