Skip to content

mcabbott/IntervalSets.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IntervalSets.jl

Interval Sets for Julia

Build Status

Coverage Status

This package represents intervals of an ordered set. For an interval spanning from a to b, all values x that lie between a and b are defined as being members of the interval.

This package is intended to implement a "minimal" foundation for intervals upon which other packages might build. In particular, we encourage type-piracy for the reason that only one interval package can unambiguously define the .. and ± operators (see below).

Currently this package defines one concrete type, ClosedInterval. These define the closed set spanning from a to b, meaning the interval is defined as the set {x} satisfying a ≤ x ≤ b. This is sometimes written [a,b] (mathematics syntax, not Julia syntax) or a..b.

Usage

You can construct ClosedIntervals in a variety of ways:

julia> using IntervalSets

julia> ClosedInterval{Float64}(1,3)
1.0..3.0

julia> 0.5..2.5
0.5..2.5

julia> 1.5±1
0.5..2.5

Similarly, you can construct OpenIntervals and Interval{:open,:closed}s, and Interval{:closed,:open}:

julia> OpenInterval{Float64}(1,3)
1.0..3.0 (open)

julia> OpenInterval(0.5..2.5)
0.5..2.5 (open)

julia> Interval{:open,:closed}(1,3)
1..3 (open–closed)

The ± operator may be typed as \pm<TAB> (using Julia's LaTeX syntax tab-completion).

Intervals also support the expected set operations:

julia> 1.75  1.5±1  # \in<TAB>; can also use `in`
true

julia> 0  1.5±1
false

julia> 1  OpenInterval(0..1)
false

julia> intersect(1..5, 3..7)   # can also use `a ∩ b`, where the symbol is \cap<TAB>
3..5

julia> isempty(intersect(1..5, 10..11))
true

julia> (0.25..5)  (3..7.4)    # \cup<TAB>; can also use union()
0.25..7.4

When computing the union, the result must also be an interval:

julia> (0.25..5)  (6..7.4)
------ ArgumentError ------------------- Stacktrace (most recent call last)

 [1] — union(::IntervalSets.ClosedInterval{Float64}, ::IntervalSets.ClosedInterval{Float64}) at closed.jl:34

ArgumentError: Cannot construct union of disjoint sets.

About

Interval Sets for Julia

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%