Skip to content

Commit 82842c3

Browse files
committed
Make adjoint/transpose for Diagonal lazy
1 parent fd7e413 commit 82842c3

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/diagonal.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -906,11 +906,10 @@ end
906906
end
907907

908908
conj(D::Diagonal) = Diagonal(conj(D.diag))
909-
transpose(D::Diagonal{<:Number}) = D
910-
transpose(D::Diagonal) = Diagonal(transpose.(D.diag))
911-
adjoint(D::Diagonal{<:Number}) = Diagonal(vec(adjoint(D.diag)))
912-
adjoint(D::Diagonal{<:Number,<:Base.ReshapedArray{<:Number,1,<:Adjoint}}) = Diagonal(adjoint(parent(D.diag)))
913-
adjoint(D::Diagonal) = Diagonal(adjoint.(D.diag))
909+
transpose(D::Diagonal) = Diagonal(vec(transpose(D.diag)))
910+
transpose(D::Diagonal{<:Any,<:Base.ReshapedArray{<:Any,1,<:TransposeAbsVec}}) = Diagonal(transpose(parent(D.diag)))
911+
adjoint(D::Diagonal) = Diagonal(vec(adjoint(D.diag)))
912+
adjoint(D::Diagonal{<:Any,<:Base.ReshapedArray{<:Any,1,<:AdjointAbsVec}}) = Diagonal(adjoint(parent(D.diag)))
914913
permutedims(D::Diagonal) = D
915914
permutedims(D::Diagonal, perm) = (Base.checkdims_perm(axes(D), axes(D), perm); D)
916915

test/diagonal.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,4 +1515,15 @@ end
15151515
@test_throws BoundsError D[LinearAlgebra.BandIndex(0,size(D,1)+1)]
15161516
end
15171517

1518+
@testset "lazy adjtrans" begin
1519+
D = Diagonal(fill([1 2; 3 4], 3))
1520+
m = [2 4; 6 8]
1521+
for op in (transpose, adjoint)
1522+
C = op(D)
1523+
el = op(m)
1524+
C[1,1] = el
1525+
@test D[1,1] == m
1526+
end
1527+
end
1528+
15181529
end # module TestDiagonal

0 commit comments

Comments
 (0)