Skip to content

Commit cb9fac3

Browse files
authored
Merge pull request #3772 from JuliaReach/schillic/rationalize_universe
`Universe`: fix `rationalize`
2 parents ead1eef + 30f0ddb commit cb9fac3

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

docs/src/lib/sets/Universe.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ Undocumented implementations:
8383
* [``](@ref ∈(::AbstractVector, ::LazySet))
8484
* [`permute`](@ref permute(::LazySet, ::AbstractVector{Int}))
8585
* [`project`](@ref project(::LazySet, ::AbstractVector{Int}))
86+
* [`rationalize`](@ref rationalize(::LazySet))
8687
* [`scale`](@ref scale(::Real, ::LazySet))
8788
* [`scale!`](@ref scale!(::Real, ::LazySet))
8889
* [`translate`](@ref translate(::LazySet, ::AbstractVector))
@@ -102,7 +103,6 @@ Inherited from [`LazySet`](@ref):
102103
* [`eltype`](@ref eltype(::Type{<:LazySet}))
103104
* [`eltype`](@ref eltype(::LazySet))
104105
* [`isoperation`](@ref isoperation(::LazySet))
105-
* [`rationalize`](@ref rationalize(::LazySet))
106106
* [`rectify`](@ref rectify(::LazySet))
107107
* [`singleton_list`](@ref singleton_list(::LazySet))
108108
* [`surface`](@ref surface(::LazySet))

src/Sets/Universe/UniverseModule.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ using ReachabilityBase.Require: require
1414
reflect, , permute, project, scale, scale!, ρ, σ,
1515
translate, translate!, cartesian_product, intersection
1616
@reexport import ..LazySets: constrained_dimensions, linear_map_inverse,
17-
tosimplehrep
17+
rationalize, tosimplehrep
1818
import Base: copy
1919
@reexport using ..API
2020

@@ -37,6 +37,7 @@ include("isuniversal.jl")
3737
include("norm.jl")
3838
include("radius.jl")
3939
include("rand.jl")
40+
include("rationalize.jl")
4041
include("reflect.jl")
4142
include("in.jl")
4243
include("permute.jl")

src/Sets/Universe/rationalize.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function rationalize(::Type{T}, U::Universe{<:AbstractFloat}, tol::Real) where {T<:Integer}
2+
return Universe{Rational{T}}(dim(U))
3+
end

test/Sets/Universe.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,5 +132,14 @@ for N in [Float64, Rational{Int}, Float32]
132132
@test_throws ArgumentError scale!(N(0), U2)
133133
end
134134

135+
for N in [Float64, Float32]
136+
U = Universe{N}(2)
137+
138+
# rationalize
139+
U2 = rationalize(U)
140+
@test U2 isa Universe{Rational{Int}} && dim(U2) == 2
141+
@test_throws MethodError rationalize(U2)
142+
end
143+
135144
# default Float64 constructor
136145
@test Universe(2) == Universe{Float64}(2)

0 commit comments

Comments
 (0)