From 2c5e4fe2053aa3a309161f9200661692c17ac6bf Mon Sep 17 00:00:00 2001 From: Tommy Hofmann Date: Fri, 24 Aug 2018 15:16:43 +0200 Subject: [PATCH] Add support for empty FacElem --- src/Misc/FactoredElem.jl | 10 ++++++++++ src/NfOrd/FacElem.jl | 3 +++ src/NfOrd/Ideal/FacElem.jl | 3 +++ 3 files changed, 16 insertions(+) diff --git a/src/Misc/FactoredElem.jl b/src/Misc/FactoredElem.jl index 0e8ffb5283..6d5a1d7c5b 100644 --- a/src/Misc/FactoredElem.jl +++ b/src/Misc/FactoredElem.jl @@ -61,6 +61,13 @@ function FacElem(d::Dict{B, fmpz}) where B return z end +function FacElem(R::Ring) + z = FacElem{elem_type(R), typeof(R)}() + z.fac = Dict{elem_type(R), fmpz}() + z.parent = FacElemMon(R) + return z +end + function FacElem(d::Dict{B, T}) where {B, T <: Integer} length(d) == 0 && error("Dictionary must not be empty") @@ -450,6 +457,9 @@ function simplify!(x::FacElem{fmpq}) end function simplify!(x::FacElem{fmpz}) + if length(x.fac) < 1 + return x + end if length(x.fac) <= 1 k,v = first(x.fac) if isone(k) diff --git a/src/NfOrd/FacElem.jl b/src/NfOrd/FacElem.jl index 0ba2e8a959..37a6f31fc5 100644 --- a/src/NfOrd/FacElem.jl +++ b/src/NfOrd/FacElem.jl @@ -122,6 +122,9 @@ function factored_norm(x::FacElem{nf_elem}) push!(c, -e) end end + if length(b) == 0 + return FacElem(FlintZZ) + end f = FacElem(b, c) simplify!(f) return f diff --git a/src/NfOrd/Ideal/FacElem.jl b/src/NfOrd/Ideal/FacElem.jl index 225544e603..63d6faa634 100644 --- a/src/NfOrd/Ideal/FacElem.jl +++ b/src/NfOrd/Ideal/FacElem.jl @@ -60,6 +60,9 @@ function abs(A::FacElemQ) B[ak] = v end end + if length(B) == 0 + return FacElem(FlintZZ) + end return FacElem(B) end