IntervalUnionArithmetic.jl

An implementation of interval union arithmetic in Julia
Author AnderGray
Popularity
11 Stars
Updated Last
10 Months Ago
Started In
April 2021

IntervalUnionArithmetic.jl

Build Status codecov

An extension to IntervalArithmetic.jl with interval unions. Interval unions are sets defined by unions of disjoint intervals.

Conversation in PR#452

This package includes constructors, arithmetic (including with intervals and scalars) and complement functions.

Installation

This is a registered julia package:

julia> ]
pkg> add IntervalUnionArithmetic.jl

or the most up to date version:

julia> ]
pkg> add https://github.com/AnderGray/IntervalUnionArithmetic.jl#master

Example

julia> a = interval(0,2)  interval(3,4)
  [0, 2]  [3, 4]

julia> b = interval(1,2)  interval(4,5)  ∅
  [1, 2]  [4, 5]

julia> c = a * b 
  [0, 10]  [12, 20]

Division and sqrt

julia> x = interval(2,5); 
julia> y = interval(-1,1);
julia> x / y                # Standard interval arithmetic
  [-∞, ∞]
  
julia> x1 = intervalUnion(x);   # Convert to interval union
julia> y1 = intervalUnion(y);
julia> x1 / y1              # Does x1 / y1 for y1\{0} if 0 ∈ y1
  [-∞, -2]  [2, ∞]

julia> sqrt(x)
  [1.41421, 2.23607]

julia> sqrt(x1)
  [-2.23607, -1.41421]  [1.41421, 2.23607]

Set operations

julia> a = interval(0,1)  interval(2,3)
  [0, 1]  [2, 3]

julia> b = interval(-1,0.5)  interval(2.5,5)
  [-1, 0.5]  [2.5, 5]

julia> complement(a)         # complement
  [-∞, 0]  [1, 2]  [3, ∞]

julia> a  b                 # Intersect
  [0, 0.5]  [2.5, 3]
  
julia> a \ b                 # Set difference
  [0.5, 1]  [2, 2.5]
  
julia> bisect(a,0.5)         # Cut at a = 0.5
  [0, 0.5]  [0.5, 1]  [2, 3]
  
julia> a  interval(0,3)     # Subset
  true

Bibiography

Used By Packages

No packages found.