Skip to content

Commit d9ec8e3

Browse files
Move kron and diagonal tests out of core linalg tests (#663)
* Move `kron` and `diagonal` tests from core linalg tests * Skip broken rand tests
1 parent 796cfd8 commit d9ec8e3

File tree

2 files changed

+139
-138
lines changed

2 files changed

+139
-138
lines changed

test/testsuite/linalg.jl

Lines changed: 136 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -188,139 +188,6 @@
188188
end
189189
end
190190

191-
@testset "diagonal" begin
192-
@testset "Array + Diagonal" begin
193-
n = 128
194-
A = AT(rand(Float32, (n,n)))
195-
d = AT(rand(Float32, n))
196-
D = Diagonal(d)
197-
B = A + D
198-
@test collect(B) collect(A) + collect(D)
199-
end
200-
201-
@testset "copy diagonal" begin
202-
a = AT(rand(Float32, 10))
203-
D = Diagonal(a)
204-
C = copy(D)
205-
@test C isa Diagonal
206-
@test C.diag isa AT
207-
@test collect(D) == collect(C)
208-
end
209-
210-
@testset "cholesky + Diagonal" begin
211-
n = 128
212-
# Add one in order prevent failures due to random numbers being zero
213-
d = AT(zeros(Float32, n) .+ one(Float32))
214-
D = Diagonal(d)
215-
F = collect(D)
216-
@test collect(cholesky(D).U) collect(cholesky(F).U)
217-
@test collect(cholesky(D).L) collect(cholesky(F).L)
218-
219-
d = AT([1f0, 2f0, -1f0, 0f0])
220-
D = Diagonal(d)
221-
@test cholesky(D, check = false).info == 3
222-
end
223-
224-
@testset "\\ + Diagonal" begin
225-
n = 128
226-
d = AT(rand(Float32, n))
227-
D = Diagonal(d)
228-
b = AT(rand(Float32, n))
229-
B = AT(rand(Float32, n, n))
230-
@test collect(D \ b) Diagonal(collect(d)) \ collect(b)
231-
@test collect(D \ B) Diagonal(collect(d)) \ collect(B)
232-
233-
d = ones(Float32, n)
234-
d[rand(1:n)] = 0
235-
d = AT(d)
236-
D = Diagonal(d)
237-
@test_throws SingularException D \ B
238-
end
239-
240-
@testset "mul! + Diagonal" begin
241-
@testset "$elty" for elty in (Float32, ComplexF32)
242-
if !(elty in eltypes)
243-
continue
244-
end
245-
n = 128
246-
d = AT(rand(elty, n))
247-
D = Diagonal(d)
248-
B = AT(rand(elty, n, n))
249-
X = AT(zeros(elty, n, n))
250-
Y = zeros(elty, n, n)
251-
α = rand(elty)
252-
β = rand(elty)
253-
mul!(X, D, B)
254-
mul!(Y, Diagonal(collect(d)), collect(B))
255-
@test collect(X) Y
256-
mul!(X, D, adjoint(B))
257-
mul!(Y, Diagonal(collect(d)), collect(adjoint(B)))
258-
@test collect(X) Y
259-
mul!(X, D, B, α, β)
260-
mul!(Y, Diagonal(collect(d)), collect(B), α, β)
261-
@test collect(X) Y
262-
mul!(X, B, D)
263-
mul!(Y, collect(B), Diagonal(collect(d)))
264-
@test collect(X) Y
265-
mul!(X, B, D, α, β)
266-
mul!(Y, collect(B), Diagonal(collect(d)), α, β)
267-
@test collect(X) Y
268-
a = AT(rand(elty, n))
269-
b = AT(rand(elty, n))
270-
C = Diagonal(d)
271-
B = Diagonal(b)
272-
A = Diagonal(a)
273-
mul!(C, A, B)
274-
@test collect(C.diag) collect(A.diag) .* collect(B.diag)
275-
a = AT(diagm(rand(elty, n)))
276-
b = AT(diagm(rand(elty, n)))
277-
C = Diagonal(d)
278-
mul!(C, a, b)
279-
@test collect(C) Diagonal(collect(a) * collect(b))
280-
a = transpose(AT(diagm(rand(elty, n))))
281-
b = adjoint(AT(diagm(rand(elty, n))))
282-
C = Diagonal(d)
283-
mul!(C, a, b)
284-
@test collect(C) Diagonal(collect(a) * collect(b))
285-
end
286-
end
287-
288-
@testset "ldiv! + Diagonal" begin
289-
n = 128
290-
d = AT(rand(Float32, n))
291-
D = Diagonal(d)
292-
b = AT(rand(Float32, n))
293-
B = AT(rand(Float32, n, n))
294-
X = AT(zeros(Float32, n, n))
295-
Y = zeros(Float32, n, n)
296-
ldiv!(X, D, B)
297-
ldiv!(Y, Diagonal(collect(d)), collect(B))
298-
@test collect(X) Y
299-
ldiv!(D, B)
300-
@test collect(B) collect(X)
301-
302-
d = ones(Float32, n)
303-
d[rand(1:n)] = 0
304-
d = AT(d)
305-
D = Diagonal(d)
306-
B = AT(rand(Float32, n, n))
307-
308-
@test_throws SingularException ldiv!(X, D, B)
309-
310-
# two-argument version throws SingularException
311-
@test_throws SingularException ldiv!(D, B)
312-
end
313-
314-
@testset "$f with diagonal $d" for f in (triu, triu!, tril, tril!),
315-
d in -2:2
316-
A = randn(Float32, 10, 10)
317-
@test compare(f, AT, A, d)
318-
319-
A_empty = randn(Float32, 0, 0)
320-
@test compare(f, AT, A_empty, d)
321-
end
322-
end
323-
324191
@testset "diagm" begin
325192
@testset "$elty" for elty in (Float32, ComplexF32)
326193
m = 128
@@ -421,12 +288,145 @@
421288
@test isone(A) == false
422289
end
423290
end
291+
end
424292

425-
@testset "kron" begin
426-
@testset "$T, $opa, $opb" for T in eltypes, opa in (vec, identity, transpose, adjoint), opb in (vec, identity, transpose, adjoint)
427-
@test compare(kron, AT, opa(rand(T, 32, 64)), opb(rand(T, 128, 16)))
293+
@testsuite "linalg/kron" (AT, eltypes) -> begin
294+
@testset "$T, $opa, $opb" for T in eltypes, opa in (vec, identity, transpose, adjoint), opb in (vec, identity, transpose, adjoint)
295+
@test compare(kron, AT, opa(rand(T, 32, 64)), opb(rand(T, 128, 16)))
296+
end
297+
end
298+
299+
@testsuite "linalg/diagonal" (AT, eltypes) -> begin
300+
@testset "Array + Diagonal" begin
301+
n = 128
302+
A = AT(rand(Float32, (n,n)))
303+
d = AT(rand(Float32, n))
304+
D = Diagonal(d)
305+
B = A + D
306+
@test collect(B) collect(A) + collect(D)
307+
end
308+
309+
@testset "copy diagonal" begin
310+
a = AT(rand(Float32, 10))
311+
D = Diagonal(a)
312+
C = copy(D)
313+
@test C isa Diagonal
314+
@test C.diag isa AT
315+
@test collect(D) == collect(C)
316+
end
317+
318+
@testset "cholesky + Diagonal" begin
319+
n = 128
320+
# Add one in order prevent failures due to random numbers being zero
321+
d = AT(zeros(Float32, n) .+ one(Float32))
322+
D = Diagonal(d)
323+
F = collect(D)
324+
@test collect(cholesky(D).U) collect(cholesky(F).U)
325+
@test collect(cholesky(D).L) collect(cholesky(F).L)
326+
327+
d = AT([1f0, 2f0, -1f0, 0f0])
328+
D = Diagonal(d)
329+
@test cholesky(D, check = false).info == 3
330+
end
331+
332+
@testset "\\ + Diagonal" begin
333+
n = 128
334+
d = AT(rand(Float32, n))
335+
D = Diagonal(d)
336+
b = AT(rand(Float32, n))
337+
B = AT(rand(Float32, n, n))
338+
@test collect(D \ b) Diagonal(collect(d)) \ collect(b)
339+
@test collect(D \ B) Diagonal(collect(d)) \ collect(B)
340+
341+
d = ones(Float32, n)
342+
d[rand(1:n)] = 0
343+
d = AT(d)
344+
D = Diagonal(d)
345+
@test_throws SingularException D \ B
346+
end
347+
348+
@testset "mul! + Diagonal" begin
349+
@testset "$elty" for elty in (Float32, ComplexF32)
350+
if !(elty in eltypes)
351+
continue
352+
end
353+
n = 128
354+
d = AT(rand(elty, n))
355+
D = Diagonal(d)
356+
B = AT(rand(elty, n, n))
357+
X = AT(zeros(elty, n, n))
358+
Y = zeros(elty, n, n)
359+
α = rand(elty)
360+
β = rand(elty)
361+
mul!(X, D, B)
362+
mul!(Y, Diagonal(collect(d)), collect(B))
363+
@test collect(X) Y
364+
mul!(X, D, adjoint(B))
365+
mul!(Y, Diagonal(collect(d)), collect(adjoint(B)))
366+
@test collect(X) Y
367+
mul!(X, D, B, α, β)
368+
mul!(Y, Diagonal(collect(d)), collect(B), α, β)
369+
@test collect(X) Y
370+
mul!(X, B, D)
371+
mul!(Y, collect(B), Diagonal(collect(d)))
372+
@test collect(X) Y
373+
mul!(X, B, D, α, β)
374+
mul!(Y, collect(B), Diagonal(collect(d)), α, β)
375+
@test collect(X) Y
376+
a = AT(rand(elty, n))
377+
b = AT(rand(elty, n))
378+
C = Diagonal(d)
379+
B = Diagonal(b)
380+
A = Diagonal(a)
381+
mul!(C, A, B)
382+
@test collect(C.diag) collect(A.diag) .* collect(B.diag)
383+
a = AT(diagm(rand(elty, n)))
384+
b = AT(diagm(rand(elty, n)))
385+
C = Diagonal(d)
386+
mul!(C, a, b)
387+
@test collect(C) Diagonal(collect(a) * collect(b))
388+
a = transpose(AT(diagm(rand(elty, n))))
389+
b = adjoint(AT(diagm(rand(elty, n))))
390+
C = Diagonal(d)
391+
mul!(C, a, b)
392+
@test collect(C) Diagonal(collect(a) * collect(b))
428393
end
429394
end
395+
396+
@testset "ldiv! + Diagonal" begin
397+
n = 128
398+
d = AT(rand(Float32, n))
399+
D = Diagonal(d)
400+
b = AT(rand(Float32, n))
401+
B = AT(rand(Float32, n, n))
402+
X = AT(zeros(Float32, n, n))
403+
Y = zeros(Float32, n, n)
404+
ldiv!(X, D, B)
405+
ldiv!(Y, Diagonal(collect(d)), collect(B))
406+
@test collect(X) Y
407+
ldiv!(D, B)
408+
@test collect(B) collect(X)
409+
410+
d = ones(Float32, n)
411+
d[rand(1:n)] = 0
412+
d = AT(d)
413+
D = Diagonal(d)
414+
B = AT(rand(Float32, n, n))
415+
416+
@test_throws SingularException ldiv!(X, D, B)
417+
418+
# two-argument version throws SingularException
419+
@test_throws SingularException ldiv!(D, B)
420+
end
421+
422+
@testset "$f with diagonal $d" for f in (triu, triu!, tril, tril!),
423+
d in -2:2
424+
A = randn(Float32, 10, 10)
425+
@test compare(f, AT, A, d)
426+
427+
A_empty = randn(Float32, 0, 0)
428+
@test compare(f, AT, A_empty, d)
429+
end
430430
end
431431

432432
@testsuite "linalg/mul!/vector-matrix" (AT, eltypes)->begin

test/testsuite/random.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
rand!(rng, A)
2525
Random.seed!(rng, 1)
2626
rand!(rng, B)
27-
@test Array(A) == Array(B) broken=SEEDING_BROKEN && (prod(d) > length(rng.state))
27+
28+
@test Array(A) == Array(B) skip=SEEDING_BROKEN && (prod(d) > length(rng.state))
2829

2930
if rng != cpu_rng
3031
rand!(cpu_rng, A)
@@ -64,7 +65,7 @@
6465
randn!(rng, A)
6566
Random.seed!(rng, 1)
6667
randn!(rng, B)
67-
@test Array(A) == Array(B) broken=SEEDING_BROKEN && (prod(d) > (2 * length(rng.state)))
68+
@test Array(A) == Array(B) skip=SEEDING_BROKEN && (prod(d) > (2 * length(rng.state)))
6869

6970
if rng != cpu_rng
7071
randn!(cpu_rng, A)

0 commit comments

Comments
 (0)