@@ -14,7 +14,8 @@ using Test, LinearAlgebra
14
14
T = Tridiagonal (rand (N - 1 ), rand (N), rand (N - 1 ))
15
15
U = UpperTriangular (rand (N,N))
16
16
L = LowerTriangular (rand (N,N))
17
- structuredarrays = (D, B, T, U, L)
17
+ M = Matrix (rand (N,N))
18
+ structuredarrays = (D, B, T, U, L, M)
18
19
fstructuredarrays = map (Array, structuredarrays)
19
20
for (X, fX) in zip (structuredarrays, fstructuredarrays)
20
21
@test (Q = broadcast (sin, X); typeof (Q) == typeof (X) && Q == broadcast (sin, fX))
56
57
T = Tridiagonal (rand (N - 1 ), rand (N), rand (N - 1 ))
57
58
◣ = LowerTriangular (rand (N,N))
58
59
◥ = UpperTriangular (rand (N,N))
60
+ M = Matrix (rand (N,N))
59
61
60
62
@test broadcast! (sin, copy (D), D) == Diagonal (sin .(D))
61
63
@test broadcast! (sin, copy (Bu), Bu) == Bidiagonal (sin .(Bu), :U )
62
64
@test broadcast! (sin, copy (Bl), Bl) == Bidiagonal (sin .(Bl), :L )
63
65
@test broadcast! (sin, copy (T), T) == Tridiagonal (sin .(T))
64
66
@test broadcast! (sin, copy (◣), ◣) == LowerTriangular (sin .(◣))
65
67
@test broadcast! (sin, copy (◥), ◥) == UpperTriangular (sin .(◥))
68
+ @test broadcast! (sin, copy (M), M) == Matrix (sin .(M))
66
69
@test broadcast! (* , copy (D), D, A) == Diagonal (broadcast (* , D, A))
67
70
@test broadcast! (* , copy (Bu), Bu, A) == Bidiagonal (broadcast (* , Bu, A), :U )
68
71
@test broadcast! (* , copy (Bl), Bl, A) == Bidiagonal (broadcast (* , Bl, A), :L )
69
72
@test broadcast! (* , copy (T), T, A) == Tridiagonal (broadcast (* , T, A))
70
73
@test broadcast! (* , copy (◣), ◣, A) == LowerTriangular (broadcast (* , ◣, A))
71
74
@test broadcast! (* , copy (◥), ◥, A) == UpperTriangular (broadcast (* , ◥, A))
75
+ @test broadcast! (* , copy (M), M, A) == Matrix (broadcast (* , M, A))
72
76
73
77
@test_throws ArgumentError broadcast! (cos, copy (D), D) == Diagonal (sin .(D))
74
78
@test_throws ArgumentError broadcast! (cos, copy (Bu), Bu) == Bidiagonal (sin .(Bu), :U )
93
97
T = Tridiagonal (rand (N - 1 ), rand (N), rand (N - 1 ))
94
98
U = UpperTriangular (rand (N,N))
95
99
L = LowerTriangular (rand (N,N))
96
- structuredarrays = (D, B, T, U, L)
100
+ M = Matrix (rand (N,N))
101
+ structuredarrays = (M, D, B, T, U, L)
97
102
fstructuredarrays = map (Array, structuredarrays)
98
103
for (X, fX) in zip (structuredarrays, fstructuredarrays)
99
104
@test (Q = map (sin, X); typeof (Q) == typeof (X) && Q == map (sin, fX))
123
128
end
124
129
end
125
130
131
+ @testset " Issue #33397" begin
132
+ N = 5
133
+ U = UpperTriangular (rand (N, N))
134
+ L = LowerTriangular (rand (N, N))
135
+ UnitU = UnitUpperTriangular (rand (N, N))
136
+ UnitL = UnitLowerTriangular (rand (N, N))
137
+ D = Diagonal (rand (N))
138
+ @test U .+ L .+ D == U + L + D
139
+ @test L .+ U .+ D == L + U + D
140
+ @test UnitU .+ UnitL .+ D == UnitU + UnitL + D
141
+ @test UnitL .+ UnitU .+ D == UnitL + UnitU + D
142
+ @test U .+ UnitL .+ D == U + UnitL + D
143
+ @test L .+ UnitU .+ D == L + UnitU + D
144
+ @test L .+ U .+ L .+ U == L + U + L + U
145
+ @test U .+ L .+ U .+ L == U + L + U + L
146
+ @test L .+ UnitL .+ UnitU .+ U .+ D == L + UnitL + UnitU + U + D
147
+ @test L .+ U .+ D .+ D .+ D .+ D == L + U + D + D + D + D
148
+ end
126
149
end
0 commit comments