Skip to content

Commit e1fe3be

Browse files
committed
Add DiagonalTensorMap(::AbstractTensorMap)
1 parent 689b4ea commit e1fe3be

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/tensors/diagonal.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@ end
7373
TensorMap(d::DiagonalTensorMap) = copy!(similar(d), d)
7474
Base.convert(::Type{TensorMap}, d::DiagonalTensorMap) = TensorMap(d)
7575

76+
# similar to Diagonal: simply take diagonal
77+
function DiagonalTensorMap(t::AbstractTensorMap)
78+
numin(t) == numout(t) == 1 && domain(t) == codomain(t) || throw(SpaceMismatch())
79+
d = DiagonalTensorMap{scalartype(t)}(undef, space(t, 1))
80+
for (c, b) in blocks(t)
81+
copy!(block(d, c), Diagonal(b))
82+
end
83+
return d
84+
end
85+
7686
function Base.convert(::Type{DiagonalTensorMap{T,S,A}},
7787
d::DiagonalTensorMap{T,S,A}) where {T,S,A}
7888
return d

0 commit comments

Comments
 (0)