@@ -9,6 +9,7 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
99 # LinearAlgebra
1010 T = SymTridiagonal (big .(randn (n)), big .(randn (n - 1 )))
1111 vals, vecs = eigen (T)
12+ @test issorted (vals)
1213 @testset " default" begin
1314 @test (vecs' * T)* vecs ≈ Diagonal (vals)
1415 @test eigvals (T) ≈ vals
@@ -17,13 +18,15 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
1718
1819 @testset " eigen2" begin
1920 vals2, vecs2 = GenericLinearAlgebra. eigen2 (T)
21+ @test issorted (vals2)
2022 @test vals ≈ vals2
2123 @test vecs[[1 ,n],:] == vecs2
2224 @test vecs2* vecs2' ≈ Matrix (I, 2 , 2 )
2325 end
2426
2527 @testset " QR version (QL is default)" begin
2628 vals, vecs = GenericLinearAlgebra. eigQR! (copy (T), vectors = Matrix {eltype(T)} (I, n, n))
29+ @test issorted (vals)
2730 @test (vecs' * T)* vecs ≈ Diagonal (vals)
2831 @test eigvals (T) ≈ vals
2932 @test vecs' vecs ≈ Matrix (I, n, n)
@@ -37,13 +40,15 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
3740 @test vecs' * A* vecs ≈ diagm (0 => vals)
3841 @test eigvals (A) ≈ vals
3942 @test vecs' vecs ≈ Matrix (I, n, n)
43+ @test issorted (vals)
4044 end
4145
4246 @testset " eigen2" begin
4347 vals2, vecs2 = GenericLinearAlgebra. eigen2 (A)
4448 @test vals ≈ vals2
4549 @test vecs[[1 ,n],:] ≈ vecs2
4650 @test vecs2* vecs2' ≈ Matrix (I, 2 , 2 )
51+ @test issorted (vals2)
4752 end
4853 end
4954
@@ -52,6 +57,8 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
5257 λ = 10 .^ range (- 8 , stop= 0 , length= n)
5358 A = Hermitian (V* Diagonal (λ)* V' |> t -> (t + t' )/ 2 , uplo)
5459 vals, vecs = eigen (A)
60+ @test issorted (vals)
61+
5562 @testset " default" begin
5663 if uplo == :L # FixMe! Probably an conjugation is off somewhere. Don't have time to check now.
5764 @test_broken vecs' * A* vecs ≈ diagm (0 => vals)
@@ -65,6 +72,7 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
6572
6673 @testset " eigen2" begin
6774 vals2, vecs2 = GenericLinearAlgebra. eigen2 (A)
75+ @test issorted (vals2)
6876 @test vals ≈ vals2
6977 @test vecs[[1 ,n],:] ≈ vecs2
7078 @test vecs2* vecs2' ≈ Matrix (I, 2 , 2 )
@@ -102,4 +110,10 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
102110 @test eigen (M1). values == GenericLinearAlgebra. _eigen! (copy (M1)). values
103111 @test eigen (M2). values == GenericLinearAlgebra. _eigen! (copy (M2)). values
104112 end
113+
114+ @testset " Sorting of `ishermitian(T)==true` matrices on pre-1.2" begin
115+ T = big .(randn (5 , 5 ))
116+ T = T + T'
117+ @test issorted (eigvals (T))
118+ end
105119end
0 commit comments