Skip to content

Commit 2e2a0f8

Browse files
committed
Check in the LAPACK test file
1 parent d014c4f commit 2e2a0f8

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

test/lapack.jl

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using Base.Test
2+
using LinearAlgebra
3+
using LinearAlgebra.LAPACK2
4+
5+
@testset "LAPACK wrappers" begin
6+
7+
n = 100
8+
9+
T = SymTridiagonal(randn(n), randn(n - 1))
10+
vals, vecs = eig(T)
11+
@testset "steqr" begin
12+
_vals, _vecs = LAPACK2.steqr!('N', copy(T.dv), copy(T.ev))
13+
@test vals _vals
14+
15+
_vals, _vecs = LAPACK2.steqr!('I', copy(T.dv), copy(T.ev))
16+
@test vals _vals
17+
@test abs.(_vecs'vecs) eye(n)
18+
19+
_vals, _vecs = LAPACK2.steqr!('V', copy(T.dv), copy(T.ev), eye(n))
20+
@test vals _vals
21+
@test abs.(_vecs'vecs) eye(n)
22+
end
23+
24+
@testset "sterf" begin
25+
_vals = LAPACK2.sterf!(copy(T.dv), copy(T.ev))
26+
@test _vals vals
27+
end
28+
29+
@testset "stedc" begin
30+
_vals, _vecs = LAPACK2.stedc!('N', copy(T.dv), copy(T.ev))
31+
@test vals _vals
32+
33+
_vals, _vecs = LAPACK2.stedc!('I', copy(T.dv), copy(T.ev))
34+
@test vals _vals
35+
@test abs.(_vecs'vecs) eye(n)
36+
37+
_vals, _vecs = LAPACK2.stedc!('V', copy(T.dv), copy(T.ev), eye(n))
38+
@test vals _vals
39+
@test abs.(_vecs'vecs) eye(n)
40+
end
41+
42+
@testset "stemr" begin
43+
_vals, _vecs, __ = LAPACK2.stemr!('N', 'A', copy(T.dv), copy(T.ev))
44+
@test vals _vals
45+
46+
_vals, _vecs, __ = LAPACK2.stemr!('N', 'V', copy(T.dv), copy(T.ev))
47+
@test vals _vals
48+
49+
_vals, _vecs, __ = LAPACK2.stemr!('N', 'I', copy(T.dv), copy(T.ev))
50+
@test vals _vals
51+
52+
_vals, _vecs, __ = LAPACK2.stemr!('V', 'A', copy(T.dv), copy(T.ev))
53+
@test vals _vals
54+
@test abs.(_vecs'vecs) eye(n)
55+
56+
_vals, _vecs, __ = LAPACK2.stemr!('V', 'V', copy(T.dv), copy(T.ev))
57+
@test vals _vals
58+
@test abs.(_vecs'vecs) eye(n)
59+
60+
_vals, _vecs, __ = LAPACK2.stemr!('V', 'I', copy(T.dv), copy(T.ev))
61+
@test vals _vals
62+
@test abs.(_vecs'vecs) eye(n)
63+
end
64+
65+
@testset "lahqr" begin
66+
T = Array(Tridiagonal(fill(0.1, 99), fill(0.0, 100), fill(40.0, 99)))
67+
_vals = sort(LinearAlgebra.LAPACK2.lahqr!(copy(T))[1])
68+
@test _vals sort(real.(LinearAlgebra.EigenGeneral.eigvals!(copy(T))))
69+
# LAPACK's multishift algorithm (the default) seems to be broken
70+
@test !(_vals sort(eigvals(T)))
71+
end
72+
end

0 commit comments

Comments
 (0)