IntervalBox
is no longer a subtype ofStaticVector
or ofAbstractArray
, but rather contains anSVector
ofInterval
s. The internalSVector
of anIntervalBox
X
is available asX.v
. #152
-
Various functions, including
bisect
, were moved here fromIntervalRootFinding.jl
. #160 -
The set operations
⊂
,⊃
and⊇
were added #154
- This is slated to be the last minor release supporting Julia 0.6.
- @mforets and @Kolaru made first contributions to the package.
-
convert(Interval{T}, x::T)
no longer does any rounding: it creates the thin (zero-width) interval[x, x]
. #114Note that this implies that numbers are no longer rounded in operations combining them with intervals, such as
0.1 + interval(0.2, 0.3)
, since0.1
isconvert
ed to anInterval
by Julia's promotion machinery.
- The unexported function
IntervalArithmetic.atomic(Interval{T}, x)
creates the smallest atomic interval obtained by directed rounding, treatingx
as representing a real number (the old behaviour ofconvert
). #114
-
sin
andcos
are over 6 times faster. #117 -
Various operations with
IntervalBox
es are faster, due to consistent use of broadcasting. #106
- Documentation about interval arithmetic in general and construction of intervals was improved.
- @tkoolen and @eeshan9815 made their first contributions to the package. Many thanks!
-
The constructor
Interval(a, b)
has had checks removed, so should not be used directly; useinterval(a, b)
instead. This is for performance reasons. #26 -
The changes to
a..b
anda±b
were reverted; these operations are now slow again, but give the narrowest possible interval when interpretinga
andb
as the human version (rather than the machine version). E.g.0.3
is treated as3/10
, not the exactly-representable floating-point number closest to 0.3. #97 -
Constructor
IntervalBox(II, Val{n})
added to easily makeIntervalBox
es that aren
copies of a given interval #79
- The package now supports only Julia v0.6 and later.
The only change in this version is to remove code supporting previous versions and
update syntax, e.g.
immutable
->struct
.
- This is the last version that will support Julia v0.5.
-
Between 2x and 3x speedup for basic arithmetic operations, using FastRounding.jl #25
-
A fast version of the power function is available, with the name
pow
#42
-
The
Interval
rounding mode may be changed only on Julia 0.6 and later using e.g.setrounding(Interval, :accurate)
. The mode on Julia 0.5 is fixed to:tight
#25 -
Renamed
infimum
->inf
andsupremum
->sup
#48 -
The operators
..
and±
for interval creation are now fast, but may give results that are slightly wider [#37](#30
- Docs have been moved to use
Documenter.jl
#31
mid
ofIntervalBox
now returns anSVector
#30
- The dependency on
ForwardDiff
has been removed #13
- The former
ValidatedNumerics.jl
package has been split intoValidatedNumerics.jl
andIntervalRootFinding.jl
.
ValidatedNumerics.jl
will now be a meta-package that re-exports both of these packages.
- Julia v0.5 and higher are supported
-
Only on Julia 0.6, it is now possible to change the interval rounding type again, using
setrounding(Interval, :accurate)
; #220 -
Changed
setdisplay
tosetformat
. Added@format
macro to simplify interface, e.g.@format standard 5 true
; #251 -
mid
is now IEEE-1788 compliant, which changes the behaviour for semi-infinite intervals #253
-
Changed from using
FixedSizeArrays.jl
toStaticArrays.jl
forIntervalBox
; this should be invisible to the end user #245 -
Fixed a bug in 1D interval Newton; #254
- v0.7 is the last version to include support for Julia v0.4
- Deprecate
displaymode
, replacing it withsetdisplay
, with simplified syntax #210:
setdisplay(:full)
- Fast integer power function
pow
#208 parse(Interval, string)
(extends and exports previously internal function) #215bisect
function inValidatedNumerics.RootFinding
for bisectingInterval
s andIntervalBox
es #217
- Many tests use
Base.Test
instead ofFactCheck
#205 - Miscellaneous bugfixes
-
Add a plot recipe for (only) 2D
IntervalBox
es usingRecipesBase.jl
. This enables plotting usingPlots.jl
: an individualIntervalBox
X
usingplot(X)
, and aVector
of them usingplot([X, Y])
-
Rewritten rounding functionality which gives type-stable interval functions, and hence better performance
-
(1..2) × (3..4)
syntax for constructingIntervalBox
es -
@interval
now always returns anInterval
. Before e.g.@interval mid(X)
forX
an interval returned a number instead.
- Root finding has been moved into a separate submodule #154.
New usage:
using ValidatedNumerics
RootFinding.newton(...)
or using ValidatedNumerics using ValidatedNumerics.RootFinding newton(...)
- Neighbouring root intervals are merged in the Newton and Krawczyk methods: #156
-
Fix display of intervals with different setdisplay options; #146
-
Add emptyinterval(x::IntervalBox); #145
- Add
setdiff
for n-dimensionalIntervalBox
es; #144
- Fix incompatibility for
IntervalBox
with latest tagged versions ofFixedSizeArrays.jl
- Add
setdiff
for 2DIntervalBox
es #143 - Make integer powers of complex intervals work #142
-
Added decorated intervals #112
-
Added
setdisplay
function for modifying how intervals are displayed #115 -
Added
±
syntax for creating intervals as e.g.1.3 ± 0.1
#116
-
Added
IntervalBox
type, representing a multi-dimensional (hyper-)box as aFixedSizeArray
ofInterval
s. -
Internal clean-up, including rewriting what was the internal, unexported
make_interval
function as (exported) methods forconvert
, so that you can now write e.g.convert(Interval{Float64}, "0.1")
; this is used by@interval
. -
Replaced the simple automatic differentiation functionality that was part of the package with the sophisticated
ForwardDiff
package. -
Unified the names of the precision and rounding functions with the new, flexible names in Julia v0.5:
-
set_interval_precision(x)
->setprecision(Interval, x)
. -
get_interval_precision()
->precision(Interval)
-
set_interval_rounding(x)
->setrounding(Interval, x)
-
get_interval_rounding()
->rounding(Interval)
-
The ITF1788 test suite has been temporarily disabled on Julia v0.5 due to a performance regression in parsing long test suites.
-
convert(Interval, x)
has been removed. You must specify the element type of the interval, e.g.convert(Interval{Float64}, 0.1)
-
Significant progress has been made towards conformance with the [IEEE 1788-2015 - IEEE Standard for Interval Arithmetic] (https://standards.ieee.org/findstds/standard/1788-2015.html), with many functions added, including hyperbolic functions (
cosh
, etc.) -
The CRlibm.jl (Correctly-Rounded mathematics library) is now used to obtain correctly-rounded elementary functions (
sin
,exp
, etc.) forFloat64
arguments. Functions that are not available inCRlibm.jl
are taken from MPFR, and are hence slower; note that this includes the^
function. -
Julia versions of files from the comprehensive ITF1788 test suite by Marco Nehmeier and Maximilian Kiesner have been included in our own test suite, thanks to the efforts of Oliver Heimlich. All relevant tests pass.
-
Documentation has been enhanced.
-
v0.2 supports only Julia v0.4 and later.
-
Changes are detailed in issue #31
-
Improvements towards conformance with the IEEE-1788 standard for Interval Arithmetic:
-
New
special_intervals.jl
file, with definitions ofemptyinterval
,entireinterval
,nai
and related functions. Add new interval functions (<=
,radius
,precedes
,strictprecedes
,≺
, etc). -
Control rounding tighter for arithmetic operations;
*
,inv
and/
have been rewritten; this includes changes inmake_interval
andconvert
to get consistent behavior. These functions pass the corresponding tests in the ITF1788 test suite. -
Deprecate the use of
⊊
in favor ofisinterior
(⪽
).
Important notice: This is the last version of the package that supports Julia v0.3.
- Increase test coverage and corresponding bug fixes
- Enable pre-compilation for Julia v0.4
- Re-enable tests for
Interval{Float64}
(e0f3c1506f
)
v0.1 is the first public release of the package.
- Two methods for interval rounding are available:
(i) narrow/slow (which uses hardward rounding mode changes for
Float64
intervals, and (ii) wide/fast (which does not change the rounding mode) - The current interval precision and rounding mode are stored in the
parameters
object - The macro
@interval
generates intervals based on the current interval precision - Trigonometric functions are "nearly" rigorous (for
Float64
intervals, correct rounding is not currently guaranteed) - Inverse trigonometric functions are available
- Intervals of
BigFloat
s are displayed with the precision as a subscript numeral
- Newton and Krawczyk methods are implemented for rigorously finding simple roots of 1D real functions
- Stringent tests are performed, with various precision settings ( Float64
and
BigFloat )