From 725493afc03a61367b32ee2920092ce7f289f0d9 Mon Sep 17 00:00:00 2001 From: kalmarek Date: Mon, 9 Apr 2018 13:03:10 +0200 Subject: [PATCH] Typed reverse Dict --- src/GroupRings.jl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/GroupRings.jl b/src/GroupRings.jl index 8fd0b68..0cdb447 100644 --- a/src/GroupRings.jl +++ b/src/GroupRings.jl @@ -521,11 +521,13 @@ function rationalize{T<:Integer, S<:Number}(::Type{T}, X::GroupRingElem{S}; return GroupRingElem(v, parent(X)) end -function reverse_dict(iter) - T = eltype(iter) - return Dict{T, Int}(x => i for (i,x) in enumerate(iter)) +function reverse_dict(::Type{I}, iter) where I<:Integer + length(iter) > typemax(I) && error("Can not produce reverse dict: $(length(iter)) is too large for $T") + return Dict{eltype(iter), I}(x => i for (i,x) in enumerate(iter)) end +reverse_dict(iter) = reverse_dict(UInt, iter) + function create_pm{T<:GroupElem}(basis::Vector{T}, basis_dict::Dict{T, Int}, limit::Int=length(basis); twisted::Bool=false, check=true) product_matrix = zeros(Int, (limit,limit))