Skip to content

Latest commit

 

History

History
199 lines (124 loc) · 8.55 KB

NEWS.md

File metadata and controls

199 lines (124 loc) · 8.55 KB

What's new in ValidatedNumerics.jl

v0.11

Supported versions of Julia

  • Support for Julia 0.6 has been dropped. This release is fully compatible with Julia 1.0.

Included packages

  • IntervalContractors.jl is now re-exported, so that reverse functions from that package are directly accessible.

v0.10

Supported versions of Julia

  • Support for Julia 0.5 has been dropped. This is the last release compatible with Julia 0.6.

v0.9

Major change: ValidatedNumerics.jl as a meta-package

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.

v0.8

Supported versions of Julia

Breaking API changes

  • Only on Julia 0.6, it is now possible to change the interval rounding type again, using setrounding(Interval, :fast); #220

  • Changed setdisplay to setformat. 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

Other

  • Changed from using FixedSizeArrays.jl to StaticArrays.jl for IntervalBox; this should be invisible to the end user #245

  • Fixed a bug in 1D interval Newton; #254

v0.7

End of support for Julia v0.4

  • v0.7 is the last version to include support for Julia v0.4

Breaking API changes

  • Deprecate displaymode, replacing it with setdisplay, with simplified syntax #210:
setdisplay(:full)

Added features

  • Fast integer power function pow #208
  • parse(Interval, string) (extends and exports previously internal function) #215
  • bisect function in ValidatedNumerics.RootFinding for bisecting Intervals and IntervalBoxes #217

Other

  • Many tests use Base.Test instead of FactCheck #205
  • Miscellaneous bugfixes

v0.6

  • Add a plot recipe for (only) 2D IntervalBoxes using RecipesBase.jl. This enables plotting using Plots.jl: an individual IntervalBox X using plot(X), and a Vector of them using plot([X, Y])

  • Rewritten rounding functionality which gives type-stable interval functions, and hence better performance

  • (1..2) × (3..4) syntax for constructing IntervalBoxes

  • @interval now always returns an Interval. Before e.g. @interval mid(X) for X an interval returned a number instead.

v0.5

  • 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

v0.4.3

  • Fix display of intervals with different setdisplay options; #146

  • Add emptyinterval(x::IntervalBox); #145

v0.4.2

  • Add setdiff for n-dimensional IntervalBoxes; #144

v0.4.1

  • Fix incompatibility for IntervalBox with latest tagged versions of FixedSizeArrays.jl
  • Add setdiff for 2D IntervalBoxes #143
  • Make integer powers of complex intervals work #142

v0.4

  • 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

v0.3

  • Added IntervalBox type, representing a multi-dimensional (hyper-)box as a FixedSizeArray of Intervals.

  • Internal clean-up, including rewriting what was the internal, unexported make_interval function as (exported) methods for convert, 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)

v0.2

  • 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.) for Float64 arguments. Functions that are not available in CRlibm.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

0.1.3

  • Improvements towards conformance with the IEEE-1788 standard for Interval Arithmetic:

  • New special_intervals.jl file, with definitions of emptyinterval, 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 in make_interval and convert to get consistent behavior. These functions pass the corresponding tests in the ITF1788 test suite.

  • Deprecate the use of in favor of isinterior ().

Important notice: This is the last version of the package that supports Julia v0.3.

0.1.2

  • Increase test coverage and corresponding bug fixes
  • Enable pre-compilation for Julia v0.4

0.1.1

  • Re-enable tests for Interval{Float64} (e0f3c1506f)

v0.1

v0.1 is the first public release of the package.

Interval arithmetic

  • 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 BigFloats are displayed with the precision as a subscript numeral

Root finding

  • Newton and Krawczyk methods are implemented for rigorously finding simple roots of 1D real functions
  • Stringent tests are performed, with various precision settings ( Float64andBigFloat )