From ccfaaa1a9deafbab1b550551ae49cc993e20c743 Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Mon, 12 Oct 2026 15:18:27 -0400 Subject: [PATCH 1/3] Fix promote_storagetype in planar preprocessor --- src/planar/preprocessors.jl | 6 +++++- src/tensors/abstracttensor.jl | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/planar/preprocessors.jl b/src/planar/preprocessors.jl index 17a99eb73..9e8363205 100644 --- a/src/planar/preprocessors.jl +++ b/src/planar/preprocessors.jl @@ -197,7 +197,11 @@ function _construct_braidingtensors!(ex, preargs, indexmap, non_braiding) # ex i end if foundV1 && foundV2 s = gensym(:τ) - storageex = Expr(:call, GlobalRef(TensorKit, :promote_storagetype), non_braiding...) + scalarex = Expr( + :call, :promote_type, + map(t -> Expr(:call, GlobalRef(TensorKit, :scalartype), t), non_braiding)... + ) + storageex = Expr(:call, GlobalRef(TensorKit, :promote_storagetype), scalarex, non_braiding...) braidingex = Expr(:call, GlobalRef(TensorKit, :braidingtensortype), V1, V2, storageex) constructex = Expr(:call, braidingex, V1, V2) push!(preargs, Expr(:(=), s, constructex)) diff --git a/src/tensors/abstracttensor.jl b/src/tensors/abstracttensor.jl index b701dd1df..8aa5645b7 100644 --- a/src/tensors/abstracttensor.jl +++ b/src/tensors/abstracttensor.jl @@ -132,6 +132,7 @@ Optionally, a scalartype `T` for the destination can be supplied that might diff @inline promote_storagetype(A::AbstractTensorMap) = storagetype(A) @inline promote_storagetype(A::AbstractTensorMap, B::AbstractTensorMap, Cs::AbstractTensorMap...) = promote_storagetype(storagetype(A), storagetype(B), map(storagetype, Cs)...) +@inline promote_storagetype(::Type{T}, A::AbstractTensorMap) where {T <: Number} = similarstoragetype(A, T) @inline promote_storagetype(::Type{T}, A::AbstractTensorMap, B::AbstractTensorMap, Cs::AbstractTensorMap...) where {T <: Number} = promote_storagetype(similarstoragetype(A, T), similarstoragetype(B, T), map(Base.Fix2(similarstoragetype, T), Cs)...) From 16249260fe8b22f4b2cad977d6542e00fba4ff4d Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Mon, 12 Oct 2026 22:55:50 +0200 Subject: [PATCH 2/3] Update abstracttensor.jl --- src/tensors/abstracttensor.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tensors/abstracttensor.jl b/src/tensors/abstracttensor.jl index 8aa5645b7..9e7e6b294 100644 --- a/src/tensors/abstracttensor.jl +++ b/src/tensors/abstracttensor.jl @@ -132,9 +132,8 @@ Optionally, a scalartype `T` for the destination can be supplied that might diff @inline promote_storagetype(A::AbstractTensorMap) = storagetype(A) @inline promote_storagetype(A::AbstractTensorMap, B::AbstractTensorMap, Cs::AbstractTensorMap...) = promote_storagetype(storagetype(A), storagetype(B), map(storagetype, Cs)...) -@inline promote_storagetype(::Type{T}, A::AbstractTensorMap) where {T <: Number} = similarstoragetype(A, T) -@inline promote_storagetype(::Type{T}, A::AbstractTensorMap, B::AbstractTensorMap, Cs::AbstractTensorMap...) where {T <: Number} = - promote_storagetype(similarstoragetype(A, T), similarstoragetype(B, T), map(Base.Fix2(similarstoragetype, T), Cs)...) +@inline promote_storagetype(::Type{T}, A::AbstractTensorMap, Bs::AbstractTensorMap...) where {T <: Number} = + promote_storagetype(similarstoragetype(A, T), mapreduce(Base.Fix2(similarstoragetype, T), Bs)...) @inline function promote_storagetype( ::Type{A}, ::Type{B}, Cs::Type{<:AbstractTensorMap}... @@ -149,6 +148,7 @@ end # promotion system in the same spirit as base/promotion.jl promote_storagetype(::Type{Base.Bottom}, ::Type{Base.Bottom}) = Base.Bottom +promote_storagetype(::Type{T}) where {T} = T promote_storagetype(::Type{T}, ::Type{T}) where {T} = T promote_storagetype(::Type{T}, ::Type{Base.Bottom}) where {T} = T promote_storagetype(::Type{Base.Bottom}, ::Type{T}) where {T} = T From ff079a9f91c53d421be1cf41b1d246e6759996f1 Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Mon, 12 Oct 2026 22:56:42 +0200 Subject: [PATCH 3/3] Update abstracttensor.jl --- src/tensors/abstracttensor.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tensors/abstracttensor.jl b/src/tensors/abstracttensor.jl index 9e7e6b294..ff2f44f10 100644 --- a/src/tensors/abstracttensor.jl +++ b/src/tensors/abstracttensor.jl @@ -133,7 +133,7 @@ Optionally, a scalartype `T` for the destination can be supplied that might diff @inline promote_storagetype(A::AbstractTensorMap, B::AbstractTensorMap, Cs::AbstractTensorMap...) = promote_storagetype(storagetype(A), storagetype(B), map(storagetype, Cs)...) @inline promote_storagetype(::Type{T}, A::AbstractTensorMap, Bs::AbstractTensorMap...) where {T <: Number} = - promote_storagetype(similarstoragetype(A, T), mapreduce(Base.Fix2(similarstoragetype, T), Bs)...) + promote_storagetype(similarstoragetype(A, T), map(Base.Fix2(similarstoragetype, T), Bs)...) @inline function promote_storagetype( ::Type{A}, ::Type{B}, Cs::Type{<:AbstractTensorMap}...