|
30 | 30 | end
|
31 | 31 |
|
32 | 32 | @testset "Triangular/Symmetric/Hermitian block arrays" begin
|
33 |
| - A = PseudoBlockArray{ComplexF64}(undef, (1:4), (1:4)) |
34 |
| - A .= reshape(1:length(A), size(A)) |
35 |
| - |
36 |
| - @test blocksize(UpperTriangular(A)) == blocksize(Symmetric(A)) == blocksize(A) |
37 |
| - @test UpperTriangular(A)[Block(2,2)] == UpperTriangular(A[2:3,2:3]) |
38 |
| - @test UpperTriangular(A)[Block(2,3)] == A[2:3,4:6] |
39 |
| - @test UpperTriangular(A)[Block(3,2)] == zeros(3,2) |
40 |
| - @test Symmetric(A)[Block(2,2)] == Symmetric(A[2:3,2:3]) |
41 |
| - @test Symmetric(A)[Block(2,3)] == A[2:3,4:6] |
42 |
| - @test Symmetric(A)[Block(3,2)] == transpose(A[2:3,4:6]) |
43 |
| - @test Hermitian(A)[Block(2,2)] == Hermitian(A[2:3,2:3]) |
44 |
| - @test Hermitian(A)[Block(2,3)] == A[2:3,4:6] |
45 |
| - @test Hermitian(A)[Block(3,2)] == A[2:3,4:6]' |
46 |
| - if VERSION ≥ v"1.2" |
47 |
| - @test stringmime("text/plain", UpperTriangular(A)) == "10×10 UpperTriangular{Complex{Float64},PseudoBlockArray{Complex{Float64},2,Array{Complex{Float64},2},Tuple{BlockedUnitRange{Array{Int64,1}},BlockedUnitRange{Array{Int64,1}}}}} with indices 1:1:10×1:1:10:\n 1.0+0.0im │ 11.0+0.0im 21.0+0.0im │ 31.0+0.0im 41.0+0.0im 51.0+0.0im │ 61.0+0.0im 71.0+0.0im 81.0+0.0im 91.0+0.0im\n ───────────┼──────────────────────────┼──────────────────────────────────────┼─────────────────────────────────────────────────\n ⋅ │ 12.0+0.0im 22.0+0.0im │ 32.0+0.0im 42.0+0.0im 52.0+0.0im │ 62.0+0.0im 72.0+0.0im 82.0+0.0im 92.0+0.0im\n ⋅ │ ⋅ 23.0+0.0im │ 33.0+0.0im 43.0+0.0im 53.0+0.0im │ 63.0+0.0im 73.0+0.0im 83.0+0.0im 93.0+0.0im\n ───────────┼──────────────────────────┼──────────────────────────────────────┼─────────────────────────────────────────────────\n ⋅ │ ⋅ ⋅ │ 34.0+0.0im 44.0+0.0im 54.0+0.0im │ 64.0+0.0im 74.0+0.0im 84.0+0.0im 94.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ 45.0+0.0im 55.0+0.0im │ 65.0+0.0im 75.0+0.0im 85.0+0.0im 95.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ 56.0+0.0im │ 66.0+0.0im 76.0+0.0im 86.0+0.0im 96.0+0.0im\n ───────────┼──────────────────────────┼──────────────────────────────────────┼─────────────────────────────────────────────────\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ 67.0+0.0im 77.0+0.0im 87.0+0.0im 97.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ ⋅ 78.0+0.0im 88.0+0.0im 98.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ ⋅ ⋅ 89.0+0.0im 99.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ ⋅ ⋅ ⋅ 100.0+0.0im" |
| 33 | + @testset "square blocks" begin |
| 34 | + A = PseudoBlockArray{ComplexF64}(undef, 1:4, 1:4) |
| 35 | + A .= reshape(1:length(A), size(A)) |
| 36 | + U = UpperTriangular(A) |
| 37 | + S = Symmetric(A) |
| 38 | + H = Hermitian(A) |
| 39 | + |
| 40 | + @test blocksize(U) == blocksize(S) == blocksize(A) |
| 41 | + @test blockaxes(U) == blockaxes(S) == blockaxes(A) |
| 42 | + |
| 43 | + @test U[Block(2,2)] == UpperTriangular(A[2:3,2:3]) |
| 44 | + @test U[Block(2,3)] == A[2:3,4:6] |
| 45 | + @test U[Block(3,2)] == zeros(3,2) |
| 46 | + @test S[Block(2,2)] == Symmetric(A[2:3,2:3]) |
| 47 | + @test S[Block(2,3)] == A[2:3,4:6] |
| 48 | + @test S[Block(3,2)] == transpose(A[2:3,4:6]) |
| 49 | + @test H[Block(2,2)] == Hermitian(A[2:3,2:3]) |
| 50 | + @test H[Block(2,3)] == A[2:3,4:6] |
| 51 | + @test H[Block(3,2)] == A[2:3,4:6]' |
| 52 | + |
| 53 | + if VERSION ≥ v"1.2" |
| 54 | + @test stringmime("text/plain", UpperTriangular(A)) == "10×10 UpperTriangular{Complex{Float64},PseudoBlockArray{Complex{Float64},2,Array{Complex{Float64},2},Tuple{BlockedUnitRange{Array{Int64,1}},BlockedUnitRange{Array{Int64,1}}}}} with indices 1:1:10×1:1:10:\n 1.0+0.0im │ 11.0+0.0im 21.0+0.0im │ 31.0+0.0im 41.0+0.0im 51.0+0.0im │ 61.0+0.0im 71.0+0.0im 81.0+0.0im 91.0+0.0im\n ───────────┼──────────────────────────┼──────────────────────────────────────┼─────────────────────────────────────────────────\n ⋅ │ 12.0+0.0im 22.0+0.0im │ 32.0+0.0im 42.0+0.0im 52.0+0.0im │ 62.0+0.0im 72.0+0.0im 82.0+0.0im 92.0+0.0im\n ⋅ │ ⋅ 23.0+0.0im │ 33.0+0.0im 43.0+0.0im 53.0+0.0im │ 63.0+0.0im 73.0+0.0im 83.0+0.0im 93.0+0.0im\n ───────────┼──────────────────────────┼──────────────────────────────────────┼─────────────────────────────────────────────────\n ⋅ │ ⋅ ⋅ │ 34.0+0.0im 44.0+0.0im 54.0+0.0im │ 64.0+0.0im 74.0+0.0im 84.0+0.0im 94.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ 45.0+0.0im 55.0+0.0im │ 65.0+0.0im 75.0+0.0im 85.0+0.0im 95.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ 56.0+0.0im │ 66.0+0.0im 76.0+0.0im 86.0+0.0im 96.0+0.0im\n ───────────┼──────────────────────────┼──────────────────────────────────────┼─────────────────────────────────────────────────\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ 67.0+0.0im 77.0+0.0im 87.0+0.0im 97.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ ⋅ 78.0+0.0im 88.0+0.0im 98.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ ⋅ ⋅ 89.0+0.0im 99.0+0.0im\n ⋅ │ ⋅ ⋅ │ ⋅ ⋅ ⋅ │ ⋅ ⋅ ⋅ 100.0+0.0im" |
| 55 | + end |
| 56 | + |
| 57 | + V = view(A, Block.(1:2), Block.(1:2)) |
| 58 | + @test blockisequal(axes(Symmetric(V)), axes(view(A,Block.(1:2), Block.(1:2)))) |
| 59 | + end |
| 60 | + |
| 61 | + @testset "rect blocks" begin |
| 62 | + A = PseudoBlockArray{ComplexF64}(undef, 1:3, fill(3,2)) |
| 63 | + A .= randn(6,6) .+ im * randn(6,6) |
| 64 | + U = UpperTriangular(A) |
| 65 | + S = Symmetric(A) |
| 66 | + H = Hermitian(A) |
| 67 | + |
| 68 | + @test blockisequal(axes(S), (axes(A,2),axes(A,2))) |
| 69 | + @test blockisequal(axes(U), axes(A)) |
| 70 | + @test blocksize(S) == (blocksize(S,1),blocksize(S,2)) == (2,2) |
| 71 | + @test blocksize(U) == (blocksize(U,1),blocksize(U,2)) == blocksize(A) |
| 72 | + @test blockaxes(S) == (blockaxes(S,1),blockaxes(S,2)) == (Block.(1:2), Block.(1:2)) |
| 73 | + @test blockaxes(U) == (blockaxes(U,1),blockaxes(U,2)) == blockaxes(A) |
| 74 | + |
| 75 | + @test U[Block(2,2)] == A[Block(2,2)] |
| 76 | + @test U[Block(3,2)] == triu(A[Block(3,2)]) |
| 77 | + @test U[Block(3,1)] == zeros(3,3) |
| 78 | + @test S[Block(2,2)] == Symmetric(A[4:6,4:6]) |
| 79 | + @test S[Block(1,2)] == A[1:3,4:6] |
| 80 | + @test S[Block(2,1)] == transpose(A[1:3,4:6]) |
| 81 | + @test H[Block(2,2)] == Hermitian(A[4:6,4:6]) |
| 82 | + @test H[Block(1,2)] == A[1:3,4:6] |
| 83 | + @test H[Block(2,1)] == A[1:3,4:6]' |
| 84 | + |
| 85 | + @test !BlockArrays.hasmatchingblocks(U) |
| 86 | + @test BlockArrays.hasmatchingblocks(S) |
| 87 | + @test BlockArrays.hasmatchingblocks(H) |
48 | 88 | end
|
49 | 89 | end
|
50 | 90 |
|
|
0 commit comments