From 710f6791fc5cc924a5e816fd08e9c391c552f3af Mon Sep 17 00:00:00 2001 From: Lea Kapelevich Date: Sat, 29 Aug 2020 19:14:29 -0400 Subject: [PATCH 1/3] add another method for Base.convert --- src/basic.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/basic.jl b/src/basic.jl index ba5e0bd..3eeda78 100644 --- a/src/basic.jl +++ b/src/basic.jl @@ -24,6 +24,9 @@ MP.changecoefficienttype(::Type{BasicSemialgebraicSet{S, PS, AT}}, T::Type) wher function Base.convert(::Type{BasicSemialgebraicSet{T, PT, AT}}, set::BasicSemialgebraicSet{T, PT, AT}) where {T, PT<:APL, AT<:AbstractAlgebraicSet} return set end +function Base.convert(::Type{BasicSemialgebraicSet{T, PT, AT}}, set::BasicSemialgebraicSet{T, PT, AT}) where {T, PT<:AbstractPolynomialLike{T}, AT<:AbstractAlgebraicSet} + return set +end function Base.convert(::Type{BasicSemialgebraicSet{T, PT, AT}}, set::BasicSemialgebraicSet) where {T, PT, AT} return BasicSemialgebraicSet{T, PT, AT}(set.V, set.p) end From f61542ca50a0eaf94c95d44dcead68be2fa1eb24 Mon Sep 17 00:00:00 2001 From: Lea Kapelevich Date: Sun, 30 Aug 2020 10:47:17 -0400 Subject: [PATCH 2/3] delete methods that don't appear to get used --- src/basic.jl | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/basic.jl b/src/basic.jl index 3eeda78..6c11ca2 100644 --- a/src/basic.jl +++ b/src/basic.jl @@ -16,17 +16,9 @@ function BasicSemialgebraicSet(V::AlgebraicSet{T, PT, A, ST}, p::Vector{PS}) whe BasicSemialgebraicSet(convert(AlgebraicSet{U, PU, A, ST}, V), Vector{PU}(p)) end #BasicSemialgebraicSet{T, PT<:APL{T}}(V::AlgebraicSet{T, PT}, p::Vector{PT}) = BasicSemialgebraicSet{T, PT}(V, p) -function basicsemialgebraicset(V, p) - BasicSemialgebraicSet(V, p) -end MP.changecoefficienttype(::Type{BasicSemialgebraicSet{S, PS, AT}}, T::Type) where {S, PS, AT} = BasicSemialgebraicSet{T, MP.changecoefficienttype(PS, T), MP.changecoefficienttype(AT, T)} -function Base.convert(::Type{BasicSemialgebraicSet{T, PT, AT}}, set::BasicSemialgebraicSet{T, PT, AT}) where {T, PT<:APL, AT<:AbstractAlgebraicSet} - return set -end -function Base.convert(::Type{BasicSemialgebraicSet{T, PT, AT}}, set::BasicSemialgebraicSet{T, PT, AT}) where {T, PT<:AbstractPolynomialLike{T}, AT<:AbstractAlgebraicSet} - return set -end + function Base.convert(::Type{BasicSemialgebraicSet{T, PT, AT}}, set::BasicSemialgebraicSet) where {T, PT, AT} return BasicSemialgebraicSet{T, PT, AT}(set.V, set.p) end From d0ecd186d38f3843af452b270f3df58ecaabe389 Mon Sep 17 00:00:00 2001 From: Lea Kapelevich Date: Wed, 2 Sep 2020 08:01:34 -0400 Subject: [PATCH 3/3] bring back basicsemialgebraicset function --- src/basic.jl | 3 +++ test/macro.jl | 1 + 2 files changed, 4 insertions(+) diff --git a/src/basic.jl b/src/basic.jl index 6c11ca2..327b65d 100644 --- a/src/basic.jl +++ b/src/basic.jl @@ -16,6 +16,9 @@ function BasicSemialgebraicSet(V::AlgebraicSet{T, PT, A, ST}, p::Vector{PS}) whe BasicSemialgebraicSet(convert(AlgebraicSet{U, PU, A, ST}, V), Vector{PU}(p)) end #BasicSemialgebraicSet{T, PT<:APL{T}}(V::AlgebraicSet{T, PT}, p::Vector{PT}) = BasicSemialgebraicSet{T, PT}(V, p) +function basicsemialgebraicset(V, p) + BasicSemialgebraicSet(V, p) +end MP.changecoefficienttype(::Type{BasicSemialgebraicSet{S, PS, AT}}, T::Type) where {S, PS, AT} = BasicSemialgebraicSet{T, MP.changecoefficienttype(PS, T), MP.changecoefficienttype(AT, T)} diff --git a/test/macro.jl b/test/macro.jl index 96ac439..ccebd17 100644 --- a/test/macro.jl +++ b/test/macro.jl @@ -12,6 +12,7 @@ struct DummySolver <: SemialgebraicSets.AbstractAlgebraicSolver end addinequality!(S, x + y - 1) # Algebraic set forces `Float64` @test S isa BasicSemialgebraicSet{Float64} + @test S == basicsemialgebraicset(S.V, S.p) @test sprint(show, S) == "{ (x, y) | x - y = 0, x^2 - y = 0, x^2*y - 1.0 ≥ 0, x + y - 1.0 ≥ 0 }" @test sprint(show, MIME"text/plain"(), S) == "Basic semialgebraic Set defined by 2 equalities\n x - y = 0\n x^2 - y = 0\n2 inequalities\n x^2*y - 1.0 ≥ 0\n x + y - 1.0 ≥ 0\n" @test S.V isa AlgebraicSet{Float64}