Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
aplavin committed Aug 25, 2024
1 parent 5dc5d65 commit 045acc2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 23 deletions.
26 changes: 12 additions & 14 deletions ext/IntervalArithmeticsIntervalSetsExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,22 @@ import IntervalSets as IS
import IntervalArithmetic as IA


# BareInterval <- IS.Interval
Base.convert(::Type{IA.BareInterval}, i::IS.Interval) = IA.bareinterval(IS.endpoints(i)...)
IA.bareinterval(i::IS.Interval) = IA.bareinterval(IS.endpoints(i)...)

# BareInterval -> IS.Interval
Base.convert(::Type{IS.Interval}, i::IA.BareInterval) = IS.Interval(IA.inf(i), IA.sup(i))
IS.Interval(i::IA.BareInterval) = IS.Interval(IA.inf(i), IA.sup(i))

# Interval <- IS.Interval
Base.convert(::Type{IA.Interval}, i::IS.Interval{<:Any,<:Any,T}) where {T} = convert(IA.Interval{float(T)}, i)
function Base.convert(::Type{IA.Interval{T}}, i::IS.Interval) where {T}
bi = IA.bareinterval(i)
return IA._unsafe_interval(bi, IA.decoration(bi), false)
function IA.interval(i::IS.Interval)
x = IA.interval(IS.endpoints(i)...)
return IA._unsafe_interval(IA.bareinterval(x), IA.decoration(x), false)
end
function IA.interval(::Type{T}, i::IS.Interval) where {T<:IA.NumTypes}
x = IA.interval(T, IS.endpoints(i)...)
return IA._unsafe_interval(IA.bareinterval(x), IA.decoration(x), false)
end
IA.interval(i::IS.Interval) = IA.interval(IS.endpoints(i)...)
Base.convert(::Type{IA.Interval}, i::IS.Interval) = IA.interval(i)
Base.convert(::Type{IA.Interval{T}}, i::IS.Interval) where {T<:IA.NumTypes} = IA.interval(T, i)

# Interval -> IS.Interval
Base.convert(::Type{IS.Interval}, i::IA.Interval) = IS.Interval(IA.inf(i), IA.sup(i))
IS.Interval(i::IA.Interval) = IS.Interval(IA.inf(i), IA.sup(i))
IS.Interval{T,S,R}(i::IA.Interval) where {T,S,R} = IS.Interval{T,S,R}(IA.inf(i), IA.sup(i))
Base.convert(::Type{IS.Interval}, i::IA.Interval) = IS.Interval(i)
Base.convert(::Type{T}, i::IA.Interval) where {T<:IS.Interval} = T(i)

end
12 changes: 3 additions & 9 deletions test/interval_tests/construction.jl
Original file line number Diff line number Diff line change
Expand Up @@ -160,23 +160,17 @@ end
@testset "Interval types conversion" begin
import IntervalSets as IS

@test convert(BareInterval, IS.Interval(1, 2)) === bareinterval(1., 2.)
@test convert(BareInterval, IS.Interval(0.1, 2.)) === bareinterval(0.1, 2.)
@test bareinterval(IS.Interval(1., 2.)) === bareinterval(1., 2.)

@test convert(IS.Interval, bareinterval(1, 2)) === IS.Interval(1., 2.)
@test convert(IS.Interval, bareinterval(0.1, 2.)) === IS.Interval(0.1, 2.)
@test IS.Interval(bareinterval(1., 2.)) === IS.Interval(1., 2.)

i = convert(Interval, IS.Interval(1, 2))
@test isequal_interval(i, interval(1., 2.)) && !isguaranteed(i)
i = convert(Interval, IS.Interval(0.1, 2))
@test isequal_interval(i, interval(0.1, 2.)) && !isguaranteed(i)
@test interval(IS.Interval(0.1, 2)) === interval(0.1, 2.)
@test interval(IS.Interval(0.1, 2)) === i
@test interval(Float64, IS.Interval(0.1, 2)) === i

@test convert(IS.Interval, interval(1, 2)) === IS.Interval(1., 2.)
@test convert(IS.Interval, interval(0.1, 2)) === IS.Interval(0.1, 2.)
@test IS.Interval(interval(0.1, 2)) === IS.Interval(0.1, 2.)
@test IS.ClosedInterval{Float64}(interval(0.1, 2)) === IS.Interval(0.1, 2.)
end

@testset "Propagation of `isguaranteed`" begin
Expand Down

0 comments on commit 045acc2

Please sign in to comment.