- Support for Julia 0.6 has been dropped. This release is fully compatible with Julia 1.0.
IntervalContractors.jl
is now re-exported, so that reverse functions from that package are directly accessible.
- Support for Julia 0.5 has been dropped. This is the last release compatible with Julia 0.6.
The functionality that was in ValidatedNumerics.jl
has been split out into IntervalArithmetic.jl
and IntervalRootFinding.jl
, which now live in the JuliaIntervals
organization.
ValidatedNumerics.jl
itself is now a "meta-package", which just loads and reexports the separate packages in the ecosystem, including IntervalConstraintProgramming.jl
and any future interval packages that are considered useful.
This actually makes usage more convenient: using ValidatedNumerics
will now bring all the exported functions from each package into scope.
- Julia v0.5 onwards are supported;
IntervalBox
on Julia v0.6 is waiting on upstream changes toStaticArrays
(JuliaArrays/StaticArrays.jl#113)
-
Only on Julia 0.6, it is now possible to change the interval rounding type again, using
setrounding(Interval, :fast)
; #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 )