@@ -919,9 +919,20 @@ _trimul!(C::AbstractMatrix, A::UpperOrLowerTriangular, B::AbstractTriangular) =
919919_trimul! (C:: AbstractMatrix , A:: AbstractTriangular , B:: UpperOrLowerTriangular ) = 
920920    generic_mattrimul! (C, uplo_char (B), isunit_char (B), wrapperop (parent (B)), A, _unwrap_at (parent (B)))
921921
922- lmul! (A:: AbstractTriangular , B:: AbstractVecOrMat ) =  @inline  _trimul! (B, A, B)
923- rmul! (A:: AbstractMatrix , B:: AbstractTriangular )   =  @inline  _trimul! (A, A, B)
924- 
922+ function  lmul! (A:: AbstractTriangular , B:: AbstractVecOrMat )
923+     if  istriu (A)
924+         _trimul! (B, uppertriangular (A), B)
925+     else 
926+         _trimul! (B, lowertriangular (A), B)
927+     end 
928+ end 
929+ function  rmul! (A:: AbstractMatrix , B:: AbstractTriangular )
930+     if  istriu (B)
931+         _trimul! (A, A, uppertriangular (B))
932+     else 
933+         _trimul! (A, A, lowertriangular (B))
934+     end 
935+ end 
925936
926937for  TC in  (:AbstractVector , :AbstractMatrix )
927938    @eval  @inline  function  _mul! (C:: $TC , A:: AbstractTriangular , B:: AbstractVector , alpha:: Number , beta:: Number )
@@ -957,8 +968,20 @@ _ldiv!(C::AbstractVecOrMat, A::UpperOrLowerTriangular, B::AbstractVecOrMat) =
957968_rdiv! (C:: AbstractMatrix , A:: AbstractMatrix , B:: UpperOrLowerTriangular ) = 
958969    generic_mattridiv! (C, uplo_char (B), isunit_char (B), wrapperop (parent (B)), A, _unwrap_at (parent (B)))
959970
960- ldiv! (A:: AbstractTriangular , B:: AbstractVecOrMat ) =  @inline  _ldiv! (B, A, B)
961- rdiv! (A:: AbstractMatrix , B:: AbstractTriangular )   =  @inline  _rdiv! (A, A, B)
971+ function  ldiv! (A:: AbstractTriangular , B:: AbstractVecOrMat )
972+     if  istriu (A)
973+         _ldiv! (B, uppertriangular (A), B)
974+     else 
975+         _ldiv! (B, lowertriangular (A), B)
976+     end 
977+ end 
978+ function  rdiv! (A:: AbstractMatrix , B:: AbstractTriangular )
979+     if  istriu (B)
980+         _rdiv! (A, A, uppertriangular (B))
981+     else 
982+         _rdiv! (A, A, lowertriangular (B))
983+     end 
984+ end 
962985
963986#  preserve triangular structure in in-place multiplication/division
964987for  (cty, aty, bty) in  ((:UpperTriangular , :UpperTriangular , :UpperTriangular ),
0 commit comments