                      GNU Octave Interval Package
               Summary of important user-visible changes

Version 2.1.0 2016-12-28
========================

   • The speed of some arithmetic operations has been greatly improved.
     They have previously been computed by multi-precision arithmetic
     which simulates binary64 floating-point arithmetic (MPFR library).
     Now, a specialized correctly rounded mathematical library (crlibm)
     computes identical results 30–100 times faster.  There is no
     accuracy drawback, arithmetic operations will compute tight
     interval enclosures as before.  The following functions benefit
     from this: acos, asin, atan, cos, cosh, exp, expm1, log, log10,
     log1p, log2, sin, sinh, tan.

   Bugfixes
   • Fixed indexing expression in interval constructor for illegal
     intervals of the form ‘[-inf, -inf]’ or ‘[inf, inf]’
   • polyval: Fixed unnecessary warnings when evaluated on empty
     intervals
   • Fixed compilation errors on FreeBSD 9.3

Version 2.0.0 2016-11-20
========================

This major release contains fundamental changes to the interval
constructors.  After a discussion on the P1788 mailing list, it has been
revealed that this interval package didn’t implement exceptions from the
standard for interval arithmetic correctly: Operations from IEEE Std
1788-2015 which trigger an “exception” shall return a value nonetheless.
Conformance has been improved in this new version, but may break
compatibility with previous versions.

   A second big news is that the interval package comprises functions
from VERSOFT, a verification software package by Jiří Rohn, who has
generously published his work as free software this year.
Unfortunately, some of VERSOFT’s functions are encrypted and could not
be included yet.

   • nai: With additional arguments, matrices of NaI (not an interval)
     values can be constructed.  Previously, NaI has been restricted to
     be of scalar value.

   • infsup: The bare interval constructor merely triggers a warning
     instead of an error on illegal input, which creates empty
     intervals.  If input contains legitimate as well as illegal input,
     only entries with illegal input will carry empty intervals.

   • infsupdec: The decorated interval constructor may create interval
     matrices which have NaI (not an interval) as entries.  If input
     contains legitimate as well as illegal input, only entries with
     illegal input will carry NaI values.

   • Warning and error identifiers of the constructors have been
     revised.

     The warning identifier ‘interval:NaI’ has been removed.  Illegal
     input signals an ‘interval:UndefinedOperation’ warning.  If the
     input is of an illegal data type or of illegal size, the
     constructors signal an ‘interval:InvalidOperand’ warning.

     The warning identifier ‘interval:PossiblyUndefinedOperation’ has
     been renamed to ‘interval:PossiblyUndefined’ to better match the
     wording in the standard document.  Also, previous versions failed
     to trigger this warning in cases where there is a floating point
     number between boundaries U < L, which has been fixed.

   • It is no longer valid to call ‘infsup (+inf, -inf)’ to create an
     empty interval and the constructor will signal a warning in these
     cases.  This change has been made to better conform to the
     ‘numsToInterval’ function from the interval standard.

     You may create empty intervals with either ‘infsup ()’ or
     ‘infsupdec ()’ or ‘empty ()’.

   • inf, sup: If the input is NaI (not an interval), these functions
     return NaN (not a number) values instead of an error.

   • Output of intervals in hexadecimal form discriminates between
     subnormal boundaries and normal boundaries.  Subnormal numbers
     start with “0x0.” whereas normal numbers start with “0x1.”.

     Also, hexadecimal form has been changed to lower case.

   • resize: New interval elements are initialized with zero instead of
     empty intervals to better match the corresponding Octave function.

   • Interval constructors may broadcast column and row vectors.

   • Performance improvements: factorial on large arguments; plot and
     plot3 on input that is plotted as a line.

   • New interval functions: tril, triu, qr

   • New functions which have been ported from Jiří Rohn’s VERSOFT:
     chol, vereigback, vereigvec, verintlinineqs, verinvnonneg,
     verlinineqnn, verlinprog

   • recip, sqr: The functions have been removed, after they have been
     deprecated in version 1.4.0.

   • plot3: Fixed plotting with gnuplot and fixed an issue where the
     figure did not switch from 2D to 3D after plotting.

   • expm1: Fixed documentation, the function computes exp (X) - 1
     instead of exp (X - 1).

   • norm: Fixed an error where the Hamming norm of empty intervals was
     non-empty.

Version 1.5.0 2016-05-31
========================

   • norm: Added subordinate matrix norms and the max norm
   • strictsubset: New interval comparison function
   • Package documentation: Added new example (Cameleon problem), and
     the growing list of examples has been split into several web pages.
   • Package documentation: Updated recommendations to install and load
     the package.  The autoload feature will be removed in Octave 4.2.0.
     (patch #8981, thanks to juanpi)
   • Support package installation in Octave 4.1.0+ (bug #47288)

Version 1.4.1 2016-02-13
========================

   • Fixed a compile error for 32-bit systems during package
     installation (bug #47100)

Version 1.4.0 2016-02-09
========================

   • mpower: Improved accuracy and speed.  The interval matrix square
     can now be computed without dependency errors and with tightest
     accuracy.
   • factorial: New interval arithmetic operation
   • expm, norm: New interval matrix operations
   • The functions recip and sqr have been deprecated and will be
     removed in a future release.  Please use ‘1 ./ X’ and ‘X .^ 2’
     instead.

Bugfixes
   • bitunpack, interval_bitpack: The order of inf/sup/dec parts has
     been fixed.  The function documentation describes how the functions
     behave on little-endian and big-endian systems.

Version 1.3.0 2015-12-22
========================

   • postpad, prepad, subsasgn: Implicit new elements during subscript
     assignment and padding have been initialized with empty intervals
     before this release.  This behavior has changed.  Now, the implicit
     new element are initialized with zero to make a correct interval
     extension of the corresponding built-in function.
   • fsolve: New function to solve (systems of) equations and compute
     the inverse of a set under a function
   • ctc_intersect, ctc_union: Utility functions for contractors and the
     fsolve function
   • det, prod, recip: New interval arithmetic functions
   • diag: New utility function to create diagonal matrices or extract
     vectors from diagonals of matrices
   • decorationpart: Choose between different return types with a second
     parameter
   • For several functions it is now possible to broadcast row vectors
     against column vectors or vectors against matrices.
   • The user manual has been restructured for better accessibility by
     new users.  A bunch of usage examples demonstrates the package’s
     capabilities.

Bugfixes
   • sum, sumabs, sumsq: Fixed result for matrices of size zero
   • powrev1, powrev2: Fixed indexing for vectors

Version 1.2.0 2015-10-01
========================

   • The output format for intervals has been changed.  The number of
     decimal places now respects what has been set by the user with the
     ‘format short’ or ‘format long’ command, and is much shorter by
     default.  Also it is possible to use ‘format hex’.  The old format
     can be accessed with the ‘intervaltotext’ function.
   • fminsearch: New optimizer function for finding the minimum value of
     a function over interval constraints using the Skelboe-Moore
     algorithm
   • fzero: Changed function parameters to support optimset options
   • power: Improved speed of the general interval power function and
     monomials with the notation x .^ n
   • plot, plot3: Added support for colormaps

Bugfixes
   • mldivide: Fixed algorithm to handle more matrices without error
   • bisect: Fixed an error during bisection of singleton intervals
     (thanks to Helmut for finding this during OctConf 2015)

Version 1.1.0 2015-08-03
========================

   • meshgrid, mince: New utility functions to help plotting of interval
     functions
   • linspace: New interval arithmetic function
   • intersect, max, min, union: Allow evaluation as aggregate functions
     within an interval matrix along a common dimension
   • Improvements to the documentation
        • Added cross-references between package documentation and
          function reference
        • Extended information about interval arithmetic in general
        • Extended information about implemented IEEE Std 1788-2015
          functions and fixed references to the standard document
        • Added information about plotting intervals
        • Simplified package description
        • Graphics with higher resolutions, demo of interval sombrero
          function plot on first page, and minor style fixes

Bugfixes
   • plot3: Fixed plotting of interval edges when plotting several
     intervals at once using matrices

Version 1.0.0 2015-06-13
========================

   • IEEE Std 1788-2015, IEEE standard for interval arithmetic, was
     approved on June 11.  To mark the occasion, the major version
     number has been raised.
   • All interval constructors have been extended to create interval
     matrices from a single string.  Commas or spaces may be used as a
     column separator (consecutive separators are trimmed).  Semicolon
     and new line characters can be used as a row separator.
   • hdist, idist, sdist, smig: New interval numeric functions
   • User manual: Relicensed under GPL, added examples from the former
     Octave SIMP package, and various minor improvements.

Bugfixes
   • mtimes: Fixed matrix-vector multiplication of decorated intervals
   • Fixed a linking error in mkoctfile that could prevent package
     installation (bug #45280)

Version 0.2.1 2015-05-30
========================

   • plot, plot3: New interval plotting functions. Pay attention to the
     included examples, which can be executed with ‘demo @infsup/plot’
     and ‘demo @infsup/plot3’ respectively.
   • polyval: New interval arithmetic algorithm
   • bisect: New set operation for bisecting algorithms
   • sinrev, cosrev, tanrev, atan2rev1, atan2rev2: Now allow non-scalar
     arguments
   • Simplified licensing: Relicensed parts of the software that were
     not under GPL
   • Updated information for citation of the package

Bugfixes
   • Fixed generation of the manual in PDF format
   • subsasgn: Fixed cases where decoration could be lost (bug #42735)

Version 0.2.0 2015-05-03
========================

   • User manual included in the package, see doc/manual.texinfo
   • New utility functions: cat, postpad, prepad, reshape, resize
   • and, or: Removed deprecated functions
   • Improved display output for cell arrays and new function: disp
   • Minor performance improvements (all decorated interval functions,
     horzcat, vertcat)

Bugfixes
   • issquare, isrow, iscolumn: Fixed compatibility issues with GNU
     Octave 4.0
   • cbrt: Allow negative values as parameter
   • cot: Fixed accuracy for x = 0
   • cos, csc, sec, sin: Fixed correctness in certain cases
   • Prevent multibyte characters in Microsoft Windows console

Version 0.1.5 2015-04-06
========================

   • Implicit decoration of bare intervals triggers a warning now and
     can be allowed or forbidden by the user.  Implicit decoration of
     bare interval literals is not affected.
   • newdec: New operation for explicit promotion of bare intervals into
     decorated intervals (without warning).
   • Decorated interval literals with illegal decoration are no longer
     allowed and produce NaIs.
   • hull: In contrast to the union function, the interval constructor
     is no longer considered a set operation and can create intervals
     with a non-trivial decoration.
   • setdiff, setxor: New set operations
   • intersect, union: Renamed set operations; the old function names
     (and, or) are hereby deprecated and are going to be removed in the
     next release.
   • intervaltotext, intervaltoexact: Decimal fractions no longer omit
     zero before the point, and unnecessary trailing decimal places can
     be omitted more consistently and in more cases than before (also
     affects console output).  Improved accuracy and performance with
     support for interval matrices.

Bugfixes
   • mtimes, mldivide: Support for broadcasting of scalar parameters
   • nextout: Support for decorated intervals
   • An error in GNU Octave core, which could lead to lost or wrong
     interval decorations, no longer affects decorated intervals
     (bug #42735)
   • Some errors in the function documentation have been fixed (thanks
     to doctest-for-matlab and Colin’s texinfo compatibility patches)
   • Fixed interval field access on Windows

Version 0.1.4 2015-03-15
========================

   • New interval constructors: hull, midrad
   • New interval arithmetic functions: cbrt, cot, coth, csc, csch,
     dilog, ei, erf, erfc, gamma, gammaln, psi, rsqrt, sec, sech
   • mtimes: Support for fast, less accurate evaluation using BLAS
     routines
   • mldivide, mrdivide, inv: Improved performance by using faster
     mtimes
   • infsup, infsupdec: Enabled broadcasting of scalar boundaries
   • rad: May compute mid and rad simultaneously
   • subsref: Access to interval properties using field syntax: x.inf
     and x.sup

Version 0.1.3 2015-02-24
========================

   • Fixed a compile error that could possibly occur during package
     installation

Version 0.1.2 2015-02-22
========================

   • New interval arithmetic functions: nthroot, hypot, log1p, expm1
   • lu: New operation for LU(P) decomposition of interval matrices
   • nai: New decorated interval constant
   • mldivide, mrdivide, inv: Greatly improved accuracy and performance
     of the linear solver
   • Improved accuracy of vector sums, dot products, pownrev, and
     powrev2
   • powrev1, powrev2, pownrev, mulrev: Now allow non-scalar arguments
   • overlap: Renamed one overlapping state from equal to equals
   • mulrevtopair: No longer available, use mulrev with two output
     parameters for two-output division
   • setdec: No longer available, use infsupdec instead
   • Small performance improvements

Bugfixes
   • Compatibility with GNU Octave 4.0 (bug #43925)
   • Build problems during package installation with environment
     variables
   • iscommoninterval: The decorated variant must return true for common
     intervals without com decoration
   • eq: The decorated variant must not consider the decoration value
   • Several decorated functions: When evaluated on a subset of the
     function’s domain, the result’s decoration must be dac if the
     function’s restriction to that subset is continuous
   • Decorated boolean functions: Must return false when evaluated on
     NaI input
   • Interval constructors: A PossibleUndefined warning must be issued
     if an interval is created from two very close decimal numbers
     (which can not be separated in the floating-point context) where
     the lower boundary is greater than the upper boundary when compared
     with infinite precision
   • Interval constructors: NaNs must produce empty intervals
   • Decorated interval constructor: Illegal decorations for empty
     intervals must be adjusted to trv, and illegal decoration com for
     unbounded intervals must be adjusted to dac.
   • cancelminus/cancelplus: The functions returned wrong results if the
     interval widths could not be compared in double-precision
   • cos: Accuracy for x = [0] improved
   • pow, powrev1, powrev2: The function must be defined for x = 0 and
     y > 0
   • All reverse operations: Must return a trivial decoration
     information at best (the only exception is mulrev)

Version 0.1.1 2015-02-01
========================

   • Increased speed of computation for large matrices
   • Improved performance for fma and dot
   • mpfr_vector_dot_d: Changed syntax for faster computation on
     intervals
   • Decorated versions of mtimes, mldivide, mpower, inv and reduction
     operations sum, dot, subabs, subsquare
   • Renamed function sumsquare to sumsq in accordance with GNU Octave
     function names
   • New function: fzero for finding all roots of an interval arithmetic
     function

Bugfixes
   • nextout: Function returned wrong results
   • exacttointerval: Now produces bare intervals instead of decorated
     intervals in conformance with IEEE P1788
   • atanh: Function returned wrong results for ±1
   • dot: Function returned wrong results for some inputs
   • fma: Function returned wrong results for some inputs
   • infsup: Function returned wrong interval boundaries for decimal
     numbers, function failed on mixed numerical and string boundaries
     in single cell array parameter
   • mulrevtopair: Fixed order of operands in conformance with
     IEEE P1788 and wrong results when evaluated on intervals that
     contain zero

Version 0.1.0 2015-01-21
========================

   • Initial release version, which already contains all required
     operations of the preliminary standard document IEEE P1788.

