@@ -9,6 +9,7 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
9
9
# LinearAlgebra
10
10
T = SymTridiagonal (big .(randn (n)), big .(randn (n - 1 )))
11
11
vals, vecs = eigen (T)
12
+ @test issorted (vals)
12
13
@testset " default" begin
13
14
@test (vecs' * T)* vecs ≈ Diagonal (vals)
14
15
@test eigvals (T) ≈ vals
@@ -17,13 +18,15 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
17
18
18
19
@testset " eigen2" begin
19
20
vals2, vecs2 = GenericLinearAlgebra. eigen2 (T)
21
+ @test issorted (vals2)
20
22
@test vals ≈ vals2
21
23
@test vecs[[1 ,n],:] == vecs2
22
24
@test vecs2* vecs2' ≈ Matrix (I, 2 , 2 )
23
25
end
24
26
25
27
@testset " QR version (QL is default)" begin
26
28
vals, vecs = GenericLinearAlgebra. eigQR! (copy (T), vectors = Matrix {eltype(T)} (I, n, n))
29
+ @test issorted (vals)
27
30
@test (vecs' * T)* vecs ≈ Diagonal (vals)
28
31
@test eigvals (T) ≈ vals
29
32
@test vecs' vecs ≈ Matrix (I, n, n)
@@ -37,13 +40,15 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
37
40
@test vecs' * A* vecs ≈ diagm (0 => vals)
38
41
@test eigvals (A) ≈ vals
39
42
@test vecs' vecs ≈ Matrix (I, n, n)
43
+ @test issorted (vals)
40
44
end
41
45
42
46
@testset " eigen2" begin
43
47
vals2, vecs2 = GenericLinearAlgebra. eigen2 (A)
44
48
@test vals ≈ vals2
45
49
@test vecs[[1 ,n],:] ≈ vecs2
46
50
@test vecs2* vecs2' ≈ Matrix (I, 2 , 2 )
51
+ @test issorted (vals2)
47
52
end
48
53
end
49
54
@@ -52,6 +57,8 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
52
57
λ = 10 .^ range (- 8 , stop= 0 , length= n)
53
58
A = Hermitian (V* Diagonal (λ)* V' |> t -> (t + t' )/ 2 , uplo)
54
59
vals, vecs = eigen (A)
60
+ @test issorted (vals)
61
+
55
62
@testset " default" begin
56
63
if uplo == :L # FixMe! Probably an conjugation is off somewhere. Don't have time to check now.
57
64
@test_broken vecs' * A* vecs ≈ diagm (0 => vals)
@@ -65,6 +72,7 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
65
72
66
73
@testset " eigen2" begin
67
74
vals2, vecs2 = GenericLinearAlgebra. eigen2 (A)
75
+ @test issorted (vals2)
68
76
@test vals ≈ vals2
69
77
@test vecs[[1 ,n],:] ≈ vecs2
70
78
@test vecs2* vecs2' ≈ Matrix (I, 2 , 2 )
@@ -102,4 +110,10 @@ Base.isreal(q::Quaternion) = q.v1 == q.v2 == q.v3 == 0
102
110
@test eigen (M1). values == GenericLinearAlgebra. _eigen! (copy (M1)). values
103
111
@test eigen (M2). values == GenericLinearAlgebra. _eigen! (copy (M2)). values
104
112
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
105
119
end
0 commit comments