From 68c6968220b67a436bdb86ece0514b9415849e93 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 2 Jun 2025 22:49:27 +0530 Subject: [PATCH 1/2] Forward `diagview` for `adjoint`/`transpose` to parent --- src/adjtrans.jl | 3 +++ test/adjtrans.jl | 11 +++++++++++ 2 files changed, 14 insertions(+) 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..ad671e30 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) == diagview(copy(A'), k) + @test diagview(transpose(A), k) == diagview(copy(transpose(A)), k) + end + @test IndexStyle(diagview(A')) == IndexLinear() + end +end + end # module TestAdjointTranspose From 1ab987c86439383f9da2cfb03f89d48e00a23daf Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Tue, 3 Jun 2025 23:02:14 +0530 Subject: [PATCH 2/2] Check `diagview` against `diag` instead of copying --- test/adjtrans.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/adjtrans.jl b/test/adjtrans.jl index ad671e30..a4fb7f7a 100644 --- a/test/adjtrans.jl +++ b/test/adjtrans.jl @@ -792,8 +792,8 @@ end 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) == diagview(copy(A'), k) - @test diagview(transpose(A), k) == diagview(copy(transpose(A)), k) + @test diagview(A', k) == diag(A', k) + @test diagview(transpose(A), k) == diag(transpose(A), k) end @test IndexStyle(diagview(A')) == IndexLinear() end