Skip to content

Commit c08dad4

Browse files
committed
move Diagonal tests
1 parent 4fe0fe1 commit c08dad4

9 files changed

Lines changed: 19 additions & 125 deletions

File tree

test/eig.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ using StableRNGs
55
using LinearAlgebra: Diagonal
66
using MatrixAlgebraKit: TruncatedAlgorithm, diagview, norm
77

8-
const BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
8+
BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
9+
GenericFloats = (Float16, BigFloat, Complex{BigFloat})
910

1011
@testset "eig_full! for T = $T" for T in BLASFloats
1112
rng = StableRNG(123)
@@ -91,7 +92,7 @@ end
9192
@test ϵ3 norm(diagview(D)[3:4]) atol = atol
9293
end
9394

94-
@testset "eig for Diagonal{$T}" for T in BLASFloats
95+
@testset "eig for Diagonal{$T}" for T in (BLASFloats..., GenericFloats...)
9596
rng = StableRNG(123)
9697
m = 54
9798
Ad = randn(rng, T, m)

test/eigh.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ using StableRNGs
55
using LinearAlgebra: LinearAlgebra, Diagonal, I
66
using MatrixAlgebraKit: TruncatedAlgorithm, diagview, norm
77

8-
const BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
8+
BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
9+
GenericFloats = (Float16, BigFloat, Complex{BigFloat})
910

1011
@testset "eigh_full! for T = $T" for T in BLASFloats
1112
rng = StableRNG(123)
@@ -100,7 +101,7 @@ end
100101
@test ϵ3 norm(diagview(D)[3:4]) atol = atol
101102
end
102103

103-
@testset "eigh for Diagonal{$T}" for T in BLASFloats
104+
@testset "eigh for Diagonal{$T}" for T in (BLASFloats..., GenericFloats...)
104105
rng = StableRNG(123)
105106
m = 54
106107
Ad = randn(rng, T, m)

test/genericlinearalgebra/eigh.jl

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -91,28 +91,3 @@ end
9191
@test diagview(D3) diagview(D)[1:2]
9292
@test ϵ3 norm(diagview(D)[3:4]) atol = atol
9393
end
94-
95-
@testset "eigh for Diagonal{$T}" for T in eltypes
96-
rng = StableRNG(123)
97-
m = 54
98-
Ad = randn(rng, T, m)
99-
Ad .+= conj.(Ad)
100-
A = Diagonal(Ad)
101-
atol = sqrt(eps(real(T)))
102-
103-
D, V = @constinferred eigh_full(A)
104-
@test D isa Diagonal{real(T)} && size(D) == size(A)
105-
@test V isa Diagonal{T} && size(V) == size(A)
106-
@test A * V V * D
107-
108-
D2 = @constinferred eigh_vals(A)
109-
@test D2 isa AbstractVector{real(T)} && length(D2) == m
110-
@test diagview(D) D2
111-
112-
A2 = Diagonal(T[0.9, 0.3, 0.1, 0.01])
113-
alg = TruncatedAlgorithm(DiagonalAlgorithm(), truncrank(2))
114-
D2, V2, ϵ2 = @constinferred eigh_trunc(A2; alg)
115-
@test diagview(D2) diagview(A2)[1:2]
116-
@test ϵ2 norm(diagview(A2)[3:4]) atol = atol
117-
118-
end

test/genericlinearalgebra/lq.jl

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -122,28 +122,3 @@ end
122122
@test Q[1:minmn, n] Q2[1:minmn, n]
123123
end
124124
end
125-
126-
@testset "lq_compact for Diagonal{$T}" for T in eltypes
127-
rng = StableRNG(123)
128-
atol = eps(real(T))^(3 / 4)
129-
for m in (54, 0)
130-
Ad = randn(rng, T, m)
131-
A = Diagonal(Ad)
132-
133-
# compact
134-
L, Q = @constinferred lq_compact(A)
135-
@test Q isa Diagonal{T} && size(Q) == (m, m)
136-
@test L isa Diagonal{T} && size(L) == (m, m)
137-
@test L * Q A
138-
@test isunitary(Q)
139-
140-
# compact and positive
141-
Lp, Qp = @constinferred lq_compact(A; positive = true)
142-
@test Qp isa Diagonal{T} && size(Qp) == (m, m)
143-
@test Lp isa Diagonal{T} && size(Lp) == (m, m)
144-
@test Lp * Qp A
145-
@test isunitary(Qp)
146-
@test all((zero(real(T))), real(diag(Lp))) &&
147-
all((zero(real(T)); atol), imag(diag(Lp)))
148-
end
149-
end

test/genericlinearalgebra/qr.jl

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -107,28 +107,3 @@ end
107107
end
108108
end
109109
end
110-
111-
@testset "qr_compact for Diagonal{$T}" for T in eltypes
112-
rng = StableRNG(123)
113-
atol = eps(real(T))^(3 / 4)
114-
for m in (54, 0)
115-
Ad = randn(rng, T, m)
116-
A = Diagonal(Ad)
117-
118-
# compact
119-
Q, R = @constinferred qr_compact(A)
120-
@test Q isa Diagonal{T} && size(Q) == (m, m)
121-
@test R isa Diagonal{T} && size(R) == (m, m)
122-
@test Q * R A
123-
@test isunitary(Q)
124-
125-
# compact and positive
126-
Qp, Rp = @constinferred qr_compact(A; positive = true)
127-
@test Qp isa Diagonal{T} && size(Qp) == (m, m)
128-
@test Rp isa Diagonal{T} && size(Rp) == (m, m)
129-
@test Qp * Rp A
130-
@test isunitary(Qp)
131-
@test all((zero(real(T))), real(diag(Rp))) &&
132-
all((zero(real(T)); atol), imag(diag(Rp)))
133-
end
134-
end

test/genericlinearalgebra/svd.jl

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -169,39 +169,3 @@ end
169169
@test ϵ2 norm(diagview(S)[3:4]) atol = atol
170170
@test_throws ArgumentError svd_trunc(A; alg, trunc = (; maxrank = 2))
171171
end
172-
173-
@testset "svd for Diagonal{$T}" for T in eltypes
174-
rng = StableRNG(123)
175-
atol = sqrt(eps(real(T)))
176-
for m in (54, 0)
177-
Ad = randn(T, m)
178-
A = Diagonal(Ad)
179-
180-
U, S, Vᴴ = @constinferred svd_compact(A)
181-
@test U isa AbstractMatrix{T} && size(U) == size(A)
182-
@test Vᴴ isa AbstractMatrix{T} && size(Vᴴ) == size(A)
183-
@test S isa Diagonal{real(T)} && size(S) == size(A)
184-
@test isunitary(U)
185-
@test isunitary(Vᴴ)
186-
@test all((0), diagview(S))
187-
@test A U * S * Vᴴ
188-
189-
U, S, Vᴴ = @constinferred svd_full(A)
190-
@test U isa AbstractMatrix{T} && size(U) == size(A)
191-
@test Vᴴ isa AbstractMatrix{T} && size(Vᴴ) == size(A)
192-
@test S isa Diagonal{real(T)} && size(S) == size(A)
193-
@test isunitary(U)
194-
@test isunitary(Vᴴ)
195-
@test all((0), diagview(S))
196-
@test A U * S * Vᴴ
197-
198-
S2 = @constinferred svd_vals(A)
199-
@test S2 isa AbstractVector{real(T)} && length(S2) == m
200-
@test S2 diagview(S)
201-
202-
alg = TruncatedAlgorithm(DiagonalAlgorithm(), truncrank(2))
203-
U3, S3, Vᴴ3, ϵ3 = @constinferred svd_trunc(A; alg)
204-
@test diagview(S3) S2[1:min(m, 2)]
205-
@test ϵ3 norm(S2[(min(m, 2) + 1):m]) atol = atol
206-
end
207-
end

test/lq.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ using StableRNGs
55
using LinearAlgebra: diag, I, Diagonal
66
using MatrixAlgebraKit: LQViaTransposedQR, LAPACK_HouseholderQR
77

8-
eltypes = (Float32, Float64, ComplexF32, ComplexF64)
8+
BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
9+
GenericFloats = (Float16, BigFloat, Complex{BigFloat})
910

10-
@testset "lq_compact! for T = $T" for T in eltypes
11+
@testset "lq_compact! for T = $T" for T in BLASFloats
1112
rng = StableRNG(123)
1213
m = 54
1314
for n in (37, m, 63)
@@ -114,7 +115,7 @@ eltypes = (Float32, Float64, ComplexF32, ComplexF64)
114115
end
115116
end
116117

117-
@testset "lq_full! for T = $T" for T in eltypes
118+
@testset "lq_full! for T = $T" for T in BLASFloats
118119
rng = StableRNG(123)
119120
m = 54
120121
for n in (37, m, 63)
@@ -208,7 +209,7 @@ end
208209
end
209210
end
210211

211-
@testset "lq_compact, lq_full and lq_null for Diagonal{$T}" for T in eltypes
212+
@testset "lq_compact, lq_full and lq_null for Diagonal{$T}" for T in (BLASFloats..., GenericFloats...)
212213
rng = StableRNG(123)
213214
atol = eps(real(T))^(3 / 4)
214215
for m in (54, 0)

test/qr.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ using TestExtras
44
using StableRNGs
55
using LinearAlgebra: diag, I, Diagonal
66

7-
eltypes = (Float32, Float64, ComplexF32, ComplexF64)
7+
BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
8+
GenericFloats = (Float16, BigFloat, Complex{BigFloat})
89

9-
@testset "qr_compact! and qr_null! for T = $T" for T in eltypes
10+
@testset "qr_compact! and qr_null! for T = $T" for T in BLASFloats
1011
rng = StableRNG(123)
1112
m = 54
1213
for n in (37, m, 63)
@@ -99,7 +100,7 @@ eltypes = (Float32, Float64, ComplexF32, ComplexF64)
99100
end
100101
end
101102

102-
@testset "qr_full! for T = $T" for T in eltypes
103+
@testset "qr_full! for T = $T" for T in BLASFloats
103104
rng = StableRNG(123)
104105
m = 54
105106
for n in (37, m, 63)
@@ -176,7 +177,7 @@ end
176177
end
177178
end
178179

179-
@testset "qr_compact, qr_full and qr_null for Diagonal{$T}" for T in eltypes
180+
@testset "qr_compact, qr_full and qr_null for Diagonal{$T}" for T in (BLASFloats..., GenericFloats...)
180181
rng = StableRNG(123)
181182
atol = eps(real(T))^(3 / 4)
182183
for m in (54, 0)

test/svd.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ using StableRNGs
55
using LinearAlgebra: LinearAlgebra, Diagonal, I, isposdef, norm
66
using MatrixAlgebraKit: TruncatedAlgorithm, diagview, isisometric
77

8-
const BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
8+
BLASFloats = (Float32, Float64, ComplexF32, ComplexF64)
9+
GenericFloats = (Float16, BigFloat, Complex{BigFloat})
910

1011
@testset "svd_compact! for T = $T" for T in BLASFloats
1112
rng = StableRNG(123)
@@ -202,7 +203,7 @@ end
202203
@test_throws ArgumentError svd_trunc(A; alg, trunc = (; maxrank = 2))
203204
end
204205

205-
@testset "svd for Diagonal{$T}" for T in BLASFloats
206+
@testset "svd for Diagonal{$T}" for T in (BLASFloats..., GenericFloats...)
206207
rng = StableRNG(123)
207208
atol = sqrt(eps(real(T)))
208209
for m in (54, 0)

0 commit comments

Comments
 (0)