@@ -597,17 +597,16 @@ function similar_diagonal(t::AbstractTensorMap, ::Type{TorA}, V::ElementarySpace
597597 return DiagonalTensorMap {T, spacetype(V), A} (undef, V)
598598end
599599
600- # 2 arguments
601- similar_diagonal (t:: AbstractTensorMap , :: Type{T} ) where {T} =
602- similar_diagonal (t, T, space (t))
603- similar_diagonal (t:: AbstractTensorMap , P:: TensorMapSpace ) =
604- similar_diagonal (t, similarstoragetype (t), P)
605- similar_diagonal (t:: AbstractTensorMap , P:: TensorSpace ) =
606- similar_diagonal (t, similarstoragetype (t), P)
600+ similar_diagonal (t:: AbstractTensorMap ) = similar_diagonal (t, similarstoragetype (t), _diagspace (t))
601+ similar_diagonal (t:: AbstractTensorMap , V:: ElementarySpace ) = similar_diagonal (t, similarstoragetype (t), V)
602+ similar_diagonal (t:: AbstractTensorMap , T:: Type ) = similar_diagonal (t, T, _diagspace (t))
607603
608- # 1 argument
609- similar_diagonal (t:: AbstractTensorMap ) =
610- similar_diagonal (t, similarstoragetype (t), space (t))
604+ function _diagspace (t)
605+ cod, dom = codomain (t), domain (t)
606+ length (cod) == 1 && cod == dom ||
607+ throw (ArgumentError (" space does not support a diagonal TensorMap" ))
608+ return only (cod)
609+ end
611610
612611# Equality and approximality
613612# ----------------------------
0 commit comments