@@ -75,13 +75,25 @@ using StaticArrays, Test, LinearAlgebra
75
75
@test vals:: SVector ≈ sort (m_d)
76
76
@test eigvals (m_c) ≈ sort (m_d)
77
77
@test eigvals (Hermitian (m_c)) ≈ sort (m_d)
78
+ end
78
79
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
85
97
end
86
98
87
99
@testset " 3×3" for i = 1 : 100
0 commit comments