File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change 156
156
(+ )(Da:: Diagonal , Db:: Diagonal ) = Diagonal (Da. diag + Db. diag)
157
157
(- )(Da:: Diagonal , Db:: Diagonal ) = Diagonal (Da. diag - Db. diag)
158
158
159
+ for f in (:+ , :- )
160
+ @eval function $f (D:: Diagonal , S:: Symmetric )
161
+ return Symmetric ($ f (D, S. data), sym_uplo (S. uplo))
162
+ end
163
+ @eval function $f (S:: Symmetric , D:: Diagonal )
164
+ return Symmetric ($ f (S. data, D), sym_uplo (S. uplo))
165
+ end
166
+ @eval function $f (D:: Diagonal{<:Real} , H:: Hermitian )
167
+ return Hermitian ($ f (D, H. data), sym_uplo (H. uplo))
168
+ end
169
+ @eval function $f (H:: Hermitian , D:: Diagonal{<:Real} )
170
+ return Hermitian ($ f (H. data, D), sym_uplo (H. uplo))
171
+ end
172
+ end
173
+
159
174
(* )(x:: Number , D:: Diagonal ) = Diagonal (x * D. diag)
160
175
(* )(D:: Diagonal , x:: Number ) = Diagonal (D. diag * x)
161
176
(/ )(D:: Diagonal , x:: Number ) = Diagonal (D. diag / x)
Original file line number Diff line number Diff line change @@ -200,6 +200,19 @@ Random.seed!(1)
200
200
A = rand (elty, n, n)
201
201
Asym = Symmetric (A + transpose (A), :U )
202
202
Aherm = Hermitian (A + adjoint (A), :U )
203
+ for op in (+ , - )
204
+ @test op (Asym, D) isa Symmetric
205
+ @test Array (op (Asym, D)) ≈ Array (Symmetric (op (Array (Asym), Array (D))))
206
+ @test op (D, Asym) isa Symmetric
207
+ @test Array (op (D, Asym)) ≈ Array (Symmetric (op (Array (D), Array (Asym))))
208
+ if ! (elty <: Real )
209
+ Dr = real (D)
210
+ @test op (Aherm, Dr) isa Hermitian
211
+ @test Array (op (Aherm, Dr)) ≈ Array (Hermitian (op (Array (Aherm), Array (Dr))))
212
+ @test op (Dr, Aherm) isa Hermitian
213
+ @test Array (op (Dr, Aherm)) ≈ Array (Hermitian (op (Array (Dr), Array (Aherm))))
214
+ end
215
+ end
203
216
@test Array (D* Transpose (Asym)) ≈ Array (D) * Array (transpose (Asym))
204
217
@test Array (D* Adjoint (Asym)) ≈ Array (D) * Array (adjoint (Asym))
205
218
@test Array (D* Transpose (Aherm)) ≈ Array (D) * Array (transpose (Aherm))
You can’t perform that action at this time.
0 commit comments