Nonvalidated High Speed versions of IntervalArithmetic.jl and IntervalContractors.jl



Build Status

Coverage Status


EAGOIntervalArithmetic.jl is essentially a copy of the IntervalArithmetic.jl and IntervalContractors.jl package in which all routines used for validated rounding are removed. It's meant to provide a much higher speed back-end for EAGOSmoothMcCormickGrad.jl and EAGOParametricInterval.jl routines used in the EAGO global solver. For many McCormick operators, the use of the nonvalidated operators will increase computation speed by between 3x-200x. Additionally, the nonvalidated library avoids any memory allocation.

The EAGOIntervalArithmetic.jl library introduces the type MCInterval{T<:AbstractFloat}(lo::T,hi::T). Neglecting the rounding behavior it behaves identically to the Interval(lo,hi) type.


Since the McCormick relaxations used in this solver aren't themselves correctly rounded, it's often acceptable to omit corrections for rounding in the interval field. For problems there are very poorly scaled or have very poorly scaled intermediate terms, the use of a corrected rounding procedures may be recommended.

Related Packages

ValidatedNumerics.jl, a collection of the interval libraries for validated interval calculations that this package is based on.

First Commit


Last Touched

about 3 years ago


2 commits