|
141 | 141 | *{T<:Number}(x::T, D::Diagonal) = Diagonal(x * D.diag)
|
142 | 142 | *{T<:Number}(D::Diagonal, x::T) = Diagonal(D.diag * x)
|
143 | 143 | /{T<:Number}(D::Diagonal, x::T) = Diagonal(D.diag / x)
|
144 |
| -*(Da::Diagonal, Db::Diagonal) = Diagonal(broadcast_elwise_op(*, Da.diag, Db.diag)) |
145 |
| -*(D::Diagonal, V::AbstractVector) = broadcast_elwise_op(*, D.diag, V) |
| 144 | +*(Da::Diagonal, Db::Diagonal) = Diagonal(Da.diag .* Db.diag) |
| 145 | +*(D::Diagonal, V::AbstractVector) = D.diag .* V |
146 | 146 |
|
147 | 147 | (*)(A::AbstractTriangular, D::Diagonal) = A_mul_B!(copy(A), D)
|
148 | 148 | (*)(D::Diagonal, B::AbstractTriangular) = A_mul_B!(D, copy(B))
|
@@ -223,7 +223,7 @@ A_mul_B!(A::AbstractMatrix,B::Diagonal) = scale!(A,B.diag)
|
223 | 223 | A_mul_Bt!(A::AbstractMatrix,B::Diagonal) = scale!(A,B.diag)
|
224 | 224 | A_mul_Bc!(A::AbstractMatrix,B::Diagonal) = scale!(A,conj(B.diag))
|
225 | 225 |
|
226 |
| -/(Da::Diagonal, Db::Diagonal) = Diagonal(broadcast_elwise_op(/, Da.diag, Db.diag)) |
| 226 | +/(Da::Diagonal, Db::Diagonal) = Diagonal(Da.diag ./ Db.diag) |
227 | 227 | function A_ldiv_B!{T}(D::Diagonal{T}, v::AbstractVector{T})
|
228 | 228 | if length(v) != length(D.diag)
|
229 | 229 | throw(DimensionMismatch("diagonal matrix is $(length(D.diag)) by $(length(D.diag)) but right hand side has $(length(v)) rows"))
|
@@ -292,8 +292,8 @@ function A_ldiv_B!(D::Diagonal, B::StridedVecOrMat)
|
292 | 292 | return B
|
293 | 293 | end
|
294 | 294 | (\)(D::Diagonal, A::AbstractMatrix) = D.diag .\ A
|
295 |
| -(\)(D::Diagonal, b::AbstractVector) = broadcast_elwise_op(\, D.diag, b) |
296 |
| -(\)(Da::Diagonal, Db::Diagonal) = Diagonal(broadcast_elwise_op(\, Da.diag, Db.diag)) |
| 295 | +(\)(D::Diagonal, b::AbstractVector) = D.diag .\ b |
| 296 | +(\)(Da::Diagonal, Db::Diagonal) = Diagonal(Da.diag .\ Db.diag) |
297 | 297 |
|
298 | 298 | function inv{T}(D::Diagonal{T})
|
299 | 299 | Di = similar(D.diag, typeof(inv(zero(T))))
|
|
0 commit comments