Skip to content

Commit

Permalink
use derive _int_type for action (which is easily user-definable)
Browse files Browse the repository at this point in the history
* also bump the default to UInt32, as we are hitting the limits
of UInt16 already ;)
  • Loading branch information
kalmarek committed Nov 14, 2023
1 parent 02fad62 commit 52eb797
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions src/ext_homomorphisms.jl
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ PermutationGroups.degree(hom::InducedActionHomomorphism) = length(basis(hom))

coeff_type(hom::InducedActionHomomorphism) = coeff_type(action(hom))
_int_type(::Type{<:StarAlgebras.AbstractBasis{T,I}}) where {T,I} = I
_int_type(hom::InducedActionHomomorphism) = _int_type(typeof(basis(hom)))

# Exceeding typemax(UInt16) here would mean e.g. that you're trying to block-diagonalize
# an SDP constraint of size 65535×65535, which is highly unlikely ;)
_int_type(::Type{<:InducedActionHomomorphism}) = UInt16
# Exceeding typemax(UInt32) here would mean e.g. that you're trying to block-diagonalize
# an SDP constraint of size 4_294_967_295 × 4_294_967_295, which is highly unlikely ;)
_int_type(::Type{<:Action}) = UInt32
_int_type(ac::Action) = _int_type(typeof(ac))
_int_type(hom::InducedActionHomomorphism) = _int_type(action(hom))

function induce(hom::InducedActionHomomorphism, g::GroupElement)
return induce(action(hom), hom, g)
Expand All @@ -43,7 +44,7 @@ end

function ExtensionHomomorphism(action::Action, basis)
return ExtensionHomomorphism(
_int_type(ExtensionHomomorphism),
_int_type(action),
action,
basis,
)
Expand Down Expand Up @@ -104,7 +105,7 @@ function CachedExtensionHomomorphism(
precompute = false,
)
return CachedExtensionHomomorphism(
_int_type(ExtensionHomomorphism),
_int_type(action),
G,
action,
basis;
Expand Down

0 comments on commit 52eb797

Please sign in to comment.