@@ -536,3 +536,27 @@ conj(A::Adjoint) = transpose(A.parent)
536536function Base. replace_in_print_matrix (A:: AdjOrTrans ,i:: Integer ,j:: Integer ,s:: AbstractString )
537537 Base. replace_in_print_matrix (parent (A), j, i, s)
538538end
539+
540+ # Special adjoint/transpose methods for Adjoint/Transpose that have been reshaped as a vector
541+ # these are used in transposing banded matrices by forwarding the operation to the bands
542+ """
543+ _vectranspose(A::AbstractVector)::AbstractVector
544+
545+ Compute `vec(transpose(A))`, but avoid an allocating reshape if possible
546+ """
547+ _vectranspose (A:: AbstractVector ) = vec (transpose (A))
548+ _vectranspose (A:: Base.ReshapedArray{<:Any,1,<:TransposeAbsVec} ) = transpose (parent (A))
549+ """
550+ _vecadjoint(A::AbstractVector)::AbstractVector
551+
552+ Compute `vec(adjoint(A))`, but avoid an allocating reshape if possible
553+ """
554+ _vecadjoint (A:: AbstractVector ) = vec (adjoint (A))
555+ _vecadjoint (A:: Base.ReshapedArray{<:Any,1,<:AdjointAbsVec} ) = adjoint (parent (A))
556+
557+ diagview (A:: Transpose , k:: Integer = 0 ) = _vectranspose (diagview (parent (A), - k))
558+ diagview (A:: Adjoint , k:: Integer = 0 ) = _vecadjoint (diagview (parent (A), - k))
559+
560+ # triu and tril
561+ triu! (A:: AdjOrTransAbsMat , k:: Integer = 0 ) = wrapperop (A)(tril! (parent (A), - k))
562+ tril! (A:: AdjOrTransAbsMat , k:: Integer = 0 ) = wrapperop (A)(triu! (parent (A), - k))
0 commit comments