mirror of
https://github.com/kalmarek/GroupRings.jl.git
synced 2024-11-19 14:35:27 +01:00
fix constructor issue
This commit is contained in:
parent
c7115c689e
commit
607d2b42c0
@ -59,12 +59,32 @@ mutable struct GroupRingElem{T, A<:AbstractVector, GR<:GroupRing} <: RingElem
|
|||||||
warn("Basis of the GroupRing is not defined.")
|
warn("Basis of the GroupRing is not defined.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return new(c, RG)
|
return new{T, A, GR}(c, RG)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
export GroupRing, GroupRingElem, complete!, create_pm, star, aug, supp
|
export GroupRing, GroupRingElem, complete!, create_pm, star, aug, supp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# GroupRing / GroupRingElem constructors
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
function GroupRingElem(c::AbstractVector, RG::GroupRing)
|
||||||
|
return GroupRingElem{eltype(c), typeof(c), typeof(RG)}(c, RG)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GroupRing(G::Group; fastm::Bool=false)
|
||||||
|
return GroupRing(G, vec(collect(elements(G))), fastm=fastm)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GroupRing(G::Group, basis::Vector, pm::Array{Int,2})
|
||||||
|
size(pm,1) == size(pm,2) || throw("pm must be square, got $(size(pm))")
|
||||||
|
eltype(basis) == elem_type(G) || throw("Basis must consist of elements of $G")
|
||||||
|
return GroupRing(G, basis, reverse_dict(basis), pm)
|
||||||
|
end
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# Type and parent object methods
|
# Type and parent object methods
|
||||||
@ -88,26 +108,6 @@ function convert(::Type{T}, X::GroupRingElem) where {T<:Number}
|
|||||||
return GroupRingElem(Vector{T}(X.coeffs), parent(X))
|
return GroupRingElem(Vector{T}(X.coeffs), parent(X))
|
||||||
end
|
end
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# GroupRing / GroupRingElem constructors
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
function GroupRingElem(c::AbstractVector, RG::GroupRing)
|
|
||||||
return GroupRingElem{eltype(c), typeof(c), typeof(RG)}(c, RG)
|
|
||||||
end
|
|
||||||
|
|
||||||
function GroupRing(G::Group; fastm::Bool=false)
|
|
||||||
return GroupRing(G, vec(collect(elements(G))), fastm=fastm)
|
|
||||||
end
|
|
||||||
|
|
||||||
function GroupRing(G::Group, basis::Vector, pm::Array{Int,2})
|
|
||||||
size(pm,1) == size(pm,2) || throw("pm must be square, got $(size(pm))")
|
|
||||||
eltype(basis) == elem_type(G) || throw("Basis must consist of elements of $G")
|
|
||||||
return GroupRing(G, basis, reverse_dict(basis), pm)
|
|
||||||
end
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# Parent object call overloads
|
# Parent object call overloads
|
||||||
@ -153,7 +153,7 @@ end
|
|||||||
|
|
||||||
# keep storage type
|
# keep storage type
|
||||||
|
|
||||||
function (RG::GroupRing)(x::AbstractVector{T}) where T
|
function (RG::GroupRing)(x::AbstractVector{T}) where T<:Number
|
||||||
length(x) == length(RG.basis) || throw("Can not coerce to $RG: lengths differ")
|
length(x) == length(RG.basis) || throw("Can not coerce to $RG: lengths differ")
|
||||||
return GroupRingElem(x, RG)
|
return GroupRingElem(x, RG)
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user