Skip to content

Commit d56ca07

Browse files
committed
use similar
1 parent ac153cd commit d56ca07

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

src/fusiontensor/base_interface.jl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,18 @@ end
107107
function Base.similar(::FusionTensor, ::Type, ::Tuple{})
108108
throw(MethodError(similar, (Tuple{},)))
109109
end
110-
111110
function Base.similar(
112111
ft::FusionTensor, ::Type{T}, new_axes::Tuple{<:Tuple,<:Tuple}
113112
) where {T}
114113
return similar(ft, T, tuplemortar(new_axes))
115114
end
116-
function Base.similar(::FusionTensor, ::Type{T}, new_axes::BlockedTuple{2}) where {T}
115+
function Base.similar(ft::FusionTensor, ::Type{T}, new_axes::BlockedTuple{2}) where {T}
116+
return similar(ft, T, FusionTensorAxes(new_axes))
117+
end
118+
function Base.similar(ft::FusionTensor, new_axes::FusionTensorAxes)
119+
return similar(ft, eltype(ft), new_axes)
120+
end
121+
function Base.similar(::FusionTensor, ::Type{T}, new_axes::FusionTensorAxes) where {T}
117122
return FusionTensor{T}(undef, new_axes)
118123
end
119124

src/permutedims/permutedims.jl

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,31 @@ using GradedArrays: AbelianStyle, NotAbelianStyle, SymmetryStyle, checkspaces
77
using TensorAlgebra: AbstractBlockPermutation, permmortar
88

99
# permutedims with 1 tuple of 2 separate tuples
10-
function fusiontensor_permutedims(ft, new_leg_indices::Tuple{Tuple,Tuple})
11-
return fusiontensor_permutedims(ft, new_leg_indices...)
10+
function fusiontensor_permutedims(ft, new_leg_dims::Tuple{Tuple,Tuple})
11+
return fusiontensor_permutedims(ft, new_leg_dims...)
1212
end
1313

14-
function fusiontensor_permutedims!(ftdst, ftsrc, new_leg_indices::Tuple{Tuple,Tuple})
15-
return fusiontensor_permutedims!(ftdst, ftsrc, new_leg_indices...)
14+
function fusiontensor_permutedims!(ftdst, ftsrc, new_leg_dims::Tuple{Tuple,Tuple})
15+
return fusiontensor_permutedims!(ftdst, ftsrc, new_leg_dims...)
1616
end
1717

1818
# permutedims with 2 separate tuples
19-
function fusiontensor_permutedims(
20-
ft, new_codomain_indices::Tuple, new_domain_indices::Tuple
21-
)
22-
biperm = permmortar((new_codomain_indices, new_domain_indices))
19+
function fusiontensor_permutedims(ft, new_codomain_dims::Tuple, new_domain_dims::Tuple)
20+
biperm = permmortar((new_codomain_dims, new_domain_dims))
2321
return fusiontensor_permutedims(ft, biperm)
2422
end
2523

2624
function fusiontensor_permutedims!(
27-
ftdst, ftsrc, new_codomain_indices::Tuple, new_domain_indices::Tuple
25+
ftdst, ftsrc, new_codomain_dims::Tuple, new_domain_dims::Tuple
2826
)
29-
biperm = permmortar((new_codomain_indices, new_domain_indices))
27+
biperm = permmortar((new_codomain_dims, new_domain_dims))
3028
return fusiontensor_permutedims!(ftdst, ftsrc, biperm)
3129
end
3230

3331
# permutedims with BlockedPermutation
3432
function fusiontensor_permutedims(ft, biperm::AbstractBlockPermutation{2})
3533
ndims(ft) == length(biperm) || throw(ArgumentError("Invalid permutation length"))
36-
ftdst = FusionTensor{eltype(ft)}(undef, axes(ft)[biperm])
34+
ftdst = similar(ft, axes(ft)[biperm])
3735
fusiontensor_permutedims!(ftdst, ft, biperm)
3836
return ftdst
3937
end

0 commit comments

Comments
 (0)