Skip to content

Commit de286f6

Browse files
committed
add more degenerate tests for 2x2 eigen
1 parent 90d0151 commit de286f6

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

test/eigen.jl

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,25 @@ using StaticArrays, Test, LinearAlgebra
7575
@test vals::SVector sort(m_d)
7676
@test eigvals(m_c) sort(m_d)
7777
@test eigvals(Hermitian(m_c)) sort(m_d)
78+
end
7879

79-
# issue #523
80-
for (i, j) in ((1, 2), (2, 1)), uplo in (:U, :L)
81-
A = SMatrix{2,2,Float64}((i, 0, 0, j))
82-
E = eigen(Symmetric(A, uplo))
83-
@test eigvecs(E) * SDiagonal(eigvals(E)) * eigvecs(E)' A
84-
end
80+
# issue #523
81+
@testset "2×2 degenerate cases" for (i, j) in ((1 , 1), (1, 2), (2, 1)), uplo in (:U, :L)
82+
fmin = floatmin(Float64)
83+
pfmin = prevfloat(fmin)
84+
nfmin = nextfloat(fmin)
85+
A = SMatrix{2,2,Float64}((i, 0, 0, j))
86+
E = eigen(Symmetric(A, uplo))
87+
@test eigvecs(E) * SDiagonal(eigvals(E)) * eigvecs(E)' A
88+
A = SMatrix{2,2,Float64}((i, pfmin, pfmin, j))
89+
E = eigen(Symmetric(A, uplo))
90+
@test eigvecs(E) * SDiagonal(eigvals(E)) * eigvecs(E)' A
91+
A = SMatrix{2,2,Float64}((i, fmin, fmin, j))
92+
E = eigen(Symmetric(A, uplo))
93+
@test eigvecs(E) * SDiagonal(eigvals(E)) * eigvecs(E)' A
94+
A = SMatrix{2,2,Float64}((i, nfmin, nfmin, j))
95+
E = eigen(Symmetric(A, uplo))
96+
@test eigvecs(E) * SDiagonal(eigvals(E)) * eigvecs(E)' A
8597
end
8698

8799
@testset "3×3" for i = 1:100

0 commit comments

Comments
 (0)