diff --git a/src/adjtrans.jl b/src/adjtrans.jl index f889d37c..06848d8e 100644 --- a/src/adjtrans.jl +++ b/src/adjtrans.jl @@ -569,3 +569,6 @@ Compute `vec(adjoint(A))`, but avoid an allocating reshape if possible """ _vecadjoint(A::AbstractVector) = vec(adjoint(A)) _vecadjoint(A::Base.ReshapedArray{<:Any,1,<:AdjointAbsVec}) = adjoint(parent(A)) + +diagview(A::Transpose, k::Integer = 0) = _vectranspose(diagview(parent(A), -k)) +diagview(A::Adjoint, k::Integer = 0) = _vecadjoint(diagview(parent(A), -k)) diff --git a/test/adjtrans.jl b/test/adjtrans.jl index adf6d9a7..a4fb7f7a 100644 --- a/test/adjtrans.jl +++ b/test/adjtrans.jl @@ -788,4 +788,15 @@ end end end +@testset "diagview" begin + for A in (rand(4, 4), rand(ComplexF64,4,4), + fill([1 2; 3 4], 4, 4)) + for k in -3:3 + @test diagview(A', k) == diag(A', k) + @test diagview(transpose(A), k) == diag(transpose(A), k) + end + @test IndexStyle(diagview(A')) == IndexLinear() + end +end + end # module TestAdjointTranspose