@@ -247,9 +247,7 @@ Base._reverse(A::Diagonal, dims) = reverse!(Matrix(A); dims)
247247Base. _reverse (A:: Diagonal , :: Colon ) = Diagonal (reverse (A. diag))
248248Base. _reverse! (A:: Diagonal , :: Colon ) = (reverse! (A. diag); A)
249249
250- ishermitian (D:: Diagonal{<:Number} ) = isreal (D. diag)
251250ishermitian (D:: Diagonal ) = all (ishermitian, D. diag)
252- issymmetric (D:: Diagonal{<:Number} ) = true
253251issymmetric (D:: Diagonal ) = all (issymmetric, D. diag)
254252isposdef (D:: Diagonal ) = all (isposdef, D. diag)
255253
@@ -702,22 +700,24 @@ end
702700for Tri in (:UpperTriangular , :LowerTriangular )
703701 UTri = Symbol (:Unit , Tri)
704702 # 2 args
705- for (fun, f) in zip ((:* , :rmul! , :rdiv! , :/ ), (:identity , :identity , :inv , :inv ))
706- @eval $ fun (A:: $Tri , D:: Diagonal ) = $ Tri ($ fun (A. data, D))
707- @eval $ fun (A:: $UTri , D:: Diagonal ) = $ Tri (_setdiag! ($ fun (A. data, D), $ f, D. diag))
703+ for (fun, f) in zip ((:mul , :rmul! , :rdiv! , :/ ), (:identity , :identity , :inv , :inv ))
704+ g = fun == :mul ? :* : fun
705+ @eval $ fun (A:: $Tri , D:: Diagonal ) = $ Tri ($ g (A. data, D))
706+ @eval $ fun (A:: $UTri , D:: Diagonal ) = $ Tri (_setdiag! ($ g (A. data, D), $ f, D. diag))
708707 end
709- @eval * (A:: $Tri{<:Any, <:StridedMaybeAdjOrTransMat} , D:: Diagonal ) =
710- @invoke * (A:: AbstractMatrix , D:: Diagonal )
711- @eval * (A:: $UTri{<:Any, <:StridedMaybeAdjOrTransMat} , D:: Diagonal ) =
712- @invoke * (A:: AbstractMatrix , D:: Diagonal )
713- for (fun, f) in zip ((:* , :lmul! , :ldiv! , :\ ), (:identity , :identity , :inv , :inv ))
714- @eval $ fun (D:: Diagonal , A:: $Tri ) = $ Tri ($ fun (D, A. data))
715- @eval $ fun (D:: Diagonal , A:: $UTri ) = $ Tri (_setdiag! ($ fun (D, A. data), $ f, D. diag))
708+ @eval mul (A:: $Tri{<:Any, <:StridedMaybeAdjOrTransMat} , D:: Diagonal ) =
709+ @invoke mul (A:: AbstractMatrix , D:: Diagonal )
710+ @eval mul (A:: $UTri{<:Any, <:StridedMaybeAdjOrTransMat} , D:: Diagonal ) =
711+ @invoke mul (A:: AbstractMatrix , D:: Diagonal )
712+ for (fun, f) in zip ((:mul , :lmul! , :ldiv! , :\ ), (:identity , :identity , :inv , :inv ))
713+ g = fun == :mul ? :* : fun
714+ @eval $ fun (D:: Diagonal , A:: $Tri ) = $ Tri ($ g (D, A. data))
715+ @eval $ fun (D:: Diagonal , A:: $UTri ) = $ Tri (_setdiag! ($ g (D, A. data), $ f, D. diag))
716716 end
717- @eval * (D:: Diagonal , A:: $Tri{<:Any, <:StridedMaybeAdjOrTransMat} ) =
718- @invoke * (D:: Diagonal , A:: AbstractMatrix )
719- @eval * (D:: Diagonal , A:: $UTri{<:Any, <:StridedMaybeAdjOrTransMat} ) =
720- @invoke * (D:: Diagonal , A:: AbstractMatrix )
717+ @eval mul (D:: Diagonal , A:: $Tri{<:Any, <:StridedMaybeAdjOrTransMat} ) =
718+ @invoke mul (D:: Diagonal , A:: AbstractMatrix )
719+ @eval mul (D:: Diagonal , A:: $UTri{<:Any, <:StridedMaybeAdjOrTransMat} ) =
720+ @invoke mul (D:: Diagonal , A:: AbstractMatrix )
721721 # 3-arg ldiv!
722722 @eval ldiv! (C:: $Tri , D:: Diagonal , A:: $Tri ) = $ Tri (ldiv! (C. data, D, A. data))
723723 @eval ldiv! (C:: $Tri , D:: Diagonal , A:: $UTri ) = $ Tri (_setdiag! (ldiv! (C. data, D, A. data), inv, D. diag))
0 commit comments