1                      GNU Octave Interval Package
2               Summary of important user-visible changes
3
4Version 3.2.0 2018-07-01
5========================
6
7   • Fixed a regression where decorated intervals could no longer be
8     used in Octave 4.4 (bug #53331).
9   • intervaltotext: A change in Octave 4.4 has removed the possibility
10     to increase Octave’s output precision beyond 16 decimal digits (bug
11     #53456), which has made it impossible to output intervals with a
12     higher accuracy.  The function ‘intervaltotext’ has been
13     reimplemented with several new format options to customize the
14     format and accuracy of the interval literal.  All recommended
15     conversion specifiers from IEEE Std 1788-2015 are now supported,
16     e. g., intervals can be printed in uncertain form.
17   • printf, fprintf, sprintf: New functions to produce formatted output
18     with interval literals.
19   • numel: Added support for additional arguments to compute the number
20     of elements after indexing an interval array.  This allows combined
21     indexing expressions of the form ‘x(1:2).inf’.
22   • Fixed several warnings during package installation.
23
24Version 3.1.0 2017-12-21
25========================
26
27This minor release introduces two new functions and fixes severe bugs.
28
29   • mod, rem: Two new interval arithmetic functions to compute the
30     remainder of a floored division or truncated division respectively.
31
32   • plot: Fixed a regression with plotting 2D rectangles in the
33     upcoming Octave 4.4.
34
35   • The internal function ‘__print_mesa__’ for off-screen mesa
36     rendering has been removed, because the upstream mesa project no
37     longer supports off-screen and on-screen rendering in a single
38     executable (Debian bug #877149).  It is recommended to use Octave’s
39     ‘print’ function instead, which has greatly been improved in
40     Octave 4.2 regarding the output of rectangles and boxes.
41
42   • A package installation error on 32-bit systems could be fixed
43     (bug #51857).
44
45   • During package installation, FPU control has not be activated on
46     x86-32 platforms.  Thus, the crlibm library could not disable
47     80-bit floating-point arithmetic and produced wrong results.  This
48     has been detected by the interval package, which fell back on the
49     slower mpfr library instead (Debian bug #874135).  After fixing
50     compiler options, x86-32 platforms can now use crlibm
51     correctly—even without 64-bit SSE registers.
52
53   • Source code for interval arithmetic tests from the ITF1788 project
54     have been removed from this package, since the loadable test data
55itl.mat’ can be edited and processed with Octave easily.  If unit
56     test code for other interval arithmetic libraries shall be
57     generated, find the project at <https://github.com/oheim/ITF1788>.
58
59   • Thanks to Olaf Till, this package obtains a configure script (patch
60     #9518).  It checks for available libraries during package
61     installation and can help to identify missing dependencies.
62
63Version 3.0.0 2017-08-19
64========================
65
66This major release introduces support for N-dimensional arrays of
67intervals.  With previous versions, interval objects have been limited
68to two dimensions.  Only scalar values, vectors, and matrices could be
69created.  Now, interval objects can be used with three or more
70dimensions as well.  Binary and ternary operations support broadcasting
71of singleton dimensions, which can be expanded to produce higher
72dimensional results.
73
74   Most work for this version has been accomplished by Joel Dahne during
75his Google Summer of Code project.  The project involved thorough
76maintenance of all interval functions, which led to improvements and
77bugfixes beyond the original goal.
78
79   • Support for N-dimensional arrays of intervals.
80
81   • Removed interval implementation of ‘meshgrid’, it now falls back on
82     the standard implementation which can output a 3-d grid properly.
83     This no longer automatically converts all input to intervals.  For
84     example, it is possible to create a grid for interval X values and
85     non-interval Y values.
86
87   • dot, prod, sum: Altered how empty input is handled.  They are more
88     consistent with the standard sum and prod functions (return
89     zero/one for 0×0 input along the first dimension).  For the dot
90     function it is slightly different from how the Octave core function
91     handles it at the moment (bug #51333).
92
93   • Output of interval matrices may be customized with ‘format compact’
94     to display more data per page.
95
96   • nthroot, pownrev: Now supports vectorization of N (for nthroot) and
97     P (for pownrev), broadcasting is fully supported.
98
99   • Indexing expressions on intervals can now use the ‘end’ keyword and
100     the special operator ‘:’ to select all entries.  This affects
101     selection of entries and assignment of entries (bug #49592, bug
102     #50626).
103
104   • Adjustments to ITF1788 test suite:
105        • Several further unit tests have been derived from libieeep1788
106          together with the latest version of the interval testing
107          framework.  That is, tests with NaN values, NaI values, IEEE
108          1788 exceptions, and tests for the following functions:
109          numsToInterval, textToInterval, intervalPart, newDev, setDec,
110          decorationPart, and reduction operations.
111        • Unit tests have been reorganized: The source code of test
112          cases has been moved to /src/test/.
113        • The test suite is no longer compiled as separate Octave test
114          files (*.tst).  Instead, any interval test library files
115          (*.itl) are stored as loadable test data (itl.mat).  The test
116          data is then used by built-in self-tests of the functions.
117          This simplifies testing of functions and saves storage space
118          after package installation.  For example, ‘test @infsup/plus119          will run any arithmetic tests on the interval plus function.
120
121   • Adjustments to the package documentation:
122        • Information about how to create N-dimensional arrays of
123          intervals.
124        • To improve privacy and page loading times, the package manual
125          no longer uses external references for CSS and web fonts.
126        • The package URL has been updated (after Octave Forge has
127          switched to HTTPS).
128        • HTML fonts have been changed and fallback fonts for Windows
129          have been introduced.
130        • Adjustments to code examples to support the latest versions of
131          the doctest package and symbolic package.
132
133   Bugfixes
134   • Processor support for SSE2 is automatically detected during package
135     installation.  This fixes installation problems on devices without
136     SSE2, for example the usual Android phones and tablets (bug
137     #51758).
138   • wid, mig, mag: Fixed wrong return value for NaI (not an interval)
139     values.  The functions failed to return NaN (not a number).
140   • diag: With more than one argument the function no longer fails with
141     an error.
142   • dot: Fixed error in identification of dimensions when broadcasting:
143     When the optional dimension argument is missing, the first
144     non-singleton dimension of both arguments is used (before
145     broadcasting applies).
146   • infsupdec: Now creates a warning if the ‘[NaI]’ literal is combined
147     with decoration, e. g.  ‘[NaI]_ill’.
148   • infsupdec: No longer produces warnings for mixed parameters with
149     strings and numerics.
150   • verlinineqnn: No longer produces warnings for unverified solutions.
151   • pow: Fixed error when called with vector arguments.  The result was
152     only guaranteed to be sharp in the first entry, e. g.  ‘pow ([0 0],
153     infsup (0, 1))’ produced the interval [0, 1] for the second entry.
154   • pow2rev: Fixed errors when called with non-scalar arguments in two
155     cases, which could produce wrong results.
156   • ctc_intersect, ctc_union: Fixed runtime errors when the combined
157     contractor function is called with less than two output arguments.
158   • sin: Fixed possible interval representation error, where the upper
159     boundary of the result could become a signed zero (bug #51283).
160   • factorial: Improved result decoration for integer input, since the
161     function is continuous (bug #51783).
162
163Version 2.1.0 2016-12-28
164========================
165
166   • The speed of some arithmetic operations has been greatly improved.
167     They have previously been computed by multi-precision arithmetic
168     which simulates binary64 floating-point arithmetic (MPFR library).
169     Now, a specialized correctly rounded mathematical library (crlibm)
170     computes identical results 30–100 times faster.  There is no
171     accuracy drawback, arithmetic operations will compute tight
172     interval enclosures as before.  The following functions benefit
173     from this: acos, asin, atan, cos, cosh, exp, expm1, log, log10,
174     log1p, log2, sin, sinh, tan.
175
176   Bugfixes
177   • Fixed indexing expression in interval constructor for illegal
178     intervals of the form ‘[-inf, -inf]’ or ‘[inf, inf]’
179   • polyval: Fixed unnecessary warnings when evaluated on empty
180     intervals
181   • Fixed compilation errors on FreeBSD 9.3
182
183Version 2.0.0 2016-11-20
184========================
185
186This major release contains fundamental changes to the interval
187constructors.  After a discussion on the P1788 mailing list, it has been
188revealed that this interval package didn’t implement exceptions from the
189standard for interval arithmetic correctly: Operations from IEEE Std
1901788-2015 which trigger an “exception” shall return a value nonetheless.
191Conformance has been improved in this new version, but may break
192compatibility with previous versions.
193
194   A second big news is that the interval package comprises functions
195from VERSOFT, a verification software package by Jiří Rohn, who has
196generously published his work as free software this year.
197Unfortunately, some of VERSOFT’s functions are encrypted and could not
198be included yet.
199
200   • nai: With additional arguments, matrices of NaI (not an interval)
201     values can be constructed.  Previously, NaI has been restricted to
202     be of scalar value.
203
204   • infsup: The bare interval constructor merely triggers a warning
205     instead of an error on illegal input, which creates empty
206     intervals.  If input contains legitimate as well as illegal input,
207     only entries with illegal input will carry empty intervals.
208
209   • infsupdec: The decorated interval constructor may create interval
210     matrices which have NaI (not an interval) as entries.  If input
211     contains legitimate as well as illegal input, only entries with
212     illegal input will carry NaI values.
213
214   • Warning and error identifiers of the constructors have been
215     revised.
216
217     The warning identifier ‘interval:NaI’ has been removed.  Illegal
218     input signals an ‘interval:UndefinedOperation’ warning.  If the
219     input is of an illegal data type or of illegal size, the
220     constructors signal an ‘interval:InvalidOperand’ warning.
221
222     The warning identifier ‘interval:PossiblyUndefinedOperation’ has
223     been renamed to ‘interval:PossiblyUndefined’ to better match the
224     wording in the standard document.  Also, previous versions failed
225     to trigger this warning in cases where there is a floating point
226     number between boundaries U < L, which has been fixed.
227
228   • It is no longer valid to call ‘infsup (+inf, -inf)’ to create an
229     empty interval and the constructor will signal a warning in these
230     cases.  This change has been made to better conform to the
231     ‘numsToInterval’ function from the interval standard.
232
233     You may create empty intervals with either ‘infsup ()’ or
234     ‘infsupdec ()’ or ‘empty ()’.
235
236   • inf, sup: If the input is NaI (not an interval), these functions
237     return NaN (not a number) values instead of an error.
238
239   • Output of intervals in hexadecimal form discriminates between
240     subnormal boundaries and normal boundaries.  Subnormal numbers
241     start with “0x0.” whereas normal numbers start with “0x1.”.
242
243     Also, hexadecimal form has been changed to lower case.
244
245   • resize: New interval elements are initialized with zero instead of
246     empty intervals to better match the corresponding Octave function.
247
248   • Interval constructors may broadcast column and row vectors.
249
250   • Performance improvements: factorial on large arguments; plot and
251     plot3 on input that is plotted as a line.
252
253   • New interval functions: tril, triu, qr
254
255   • New functions which have been ported from Jiří Rohn’s VERSOFT:
256     chol, vereigback, vereigvec, verintlinineqs, verinvnonneg,
257     verlinineqnn, verlinprog
258
259   • recip, sqr: The functions have been removed, after they have been
260     deprecated in version 1.4.0.
261
262   • plot3: Fixed plotting with gnuplot and fixed an issue where the
263     figure did not switch from 2D to 3D after plotting.
264
265   • expm1: Fixed documentation, the function computes exp (X) - 1
266     instead of exp (X - 1).
267
268   • norm: Fixed an error where the Hamming norm of empty intervals was
269     non-empty.
270
271Version 1.5.0 2016-05-31
272========================
273
274   • norm: Added subordinate matrix norms and the max norm
275   • strictsubset: New interval comparison function
276   • Package documentation: Added new example (Cameleon problem), and
277     the growing list of examples has been split into several web pages.
278   • Package documentation: Updated recommendations to install and load
279     the package.  The autoload feature will be removed in Octave 4.2.0.
280     (patch #8981, thanks to juanpi)
281   • Support package installation in Octave 4.1.0+ (bug #47288)
282
283Version 1.4.1 2016-02-13
284========================
285
286   • Fixed a compile error for 32-bit systems during package
287     installation (bug #47100)
288
289Version 1.4.0 2016-02-09
290========================
291
292   • mpower: Improved accuracy and speed.  The interval matrix square
293     can now be computed without dependency errors and with tightest
294     accuracy.
295   • factorial: New interval arithmetic operation
296   • expm, norm: New interval matrix operations
297   • The functions recip and sqr have been deprecated and will be
298     removed in a future release.  Please use ‘1 ./ X’ and ‘X .^ 2’
299     instead.
300
301Bugfixes
302   • bitunpack, interval_bitpack: The order of inf/sup/dec parts has
303     been fixed.  The function documentation describes how the functions
304     behave on little-endian and big-endian systems.
305
306Version 1.3.0 2015-12-22
307========================
308
309   • postpad, prepad, subsasgn: Implicit new elements during subscript
310     assignment and padding have been initialized with empty intervals
311     before this release.  This behavior has changed.  Now, the implicit
312     new element are initialized with zero to make a correct interval
313     extension of the corresponding built-in function.
314   • fsolve: New function to solve (systems of) equations and compute
315     the inverse of a set under a function
316   • ctc_intersect, ctc_union: Utility functions for contractors and the
317     fsolve function
318   • det, prod, recip: New interval arithmetic functions
319   • diag: New utility function to create diagonal matrices or extract
320     vectors from diagonals of matrices
321   • decorationpart: Choose between different return types with a second
322     parameter
323   • For several functions it is now possible to broadcast row vectors
324     against column vectors or vectors against matrices.
325   • The user manual has been restructured for better accessibility by
326     new users.  A bunch of usage examples demonstrates the package’s
327     capabilities.
328
329Bugfixes
330   • sum, sumabs, sumsq: Fixed result for matrices of size zero
331   • powrev1, powrev2: Fixed indexing for vectors
332
333Version 1.2.0 2015-10-01
334========================
335
336   • The output format for intervals has been changed.  The number of
337     decimal places now respects what has been set by the user with the
338     ‘format short’ or ‘format long’ command, and is much shorter by
339     default.  Also it is possible to use ‘format hex’.  The old format
340     can be accessed with the ‘intervaltotext’ function.
341   • fminsearch: New optimizer function for finding the minimum value of
342     a function over interval constraints using the Skelboe-Moore
343     algorithm
344   • fzero: Changed function parameters to support optimset options
345   • power: Improved speed of the general interval power function and
346     monomials with the notation x .^ n
347   • plot, plot3: Added support for colormaps
348
349Bugfixes
350   • mldivide: Fixed algorithm to handle more matrices without error
351   • bisect: Fixed an error during bisection of singleton intervals
352     (thanks to Helmut for finding this during OctConf 2015)
353
354Version 1.1.0 2015-08-03
355========================
356
357   • meshgrid, mince: New utility functions to help plotting of interval
358     functions
359   • linspace: New interval arithmetic function
360   • intersect, max, min, union: Allow evaluation as aggregate functions
361     within an interval matrix along a common dimension
362   • Improvements to the documentation
363        • Added cross-references between package documentation and
364          function reference
365        • Extended information about interval arithmetic in general
366        • Extended information about implemented IEEE Std 1788-2015
367          functions and fixed references to the standard document
368        • Added information about plotting intervals
369        • Simplified package description
370        • Graphics with higher resolutions, demo of interval sombrero
371          function plot on first page, and minor style fixes
372
373Bugfixes
374   • plot3: Fixed plotting of interval edges when plotting several
375     intervals at once using matrices
376
377Version 1.0.0 2015-06-13
378========================
379
380   • IEEE Std 1788-2015, IEEE standard for interval arithmetic, was
381     approved on June 11.  To mark the occasion, the major version
382     number has been raised.
383   • All interval constructors have been extended to create interval
384     matrices from a single string.  Commas or spaces may be used as a
385     column separator (consecutive separators are trimmed).  Semicolon
386     and new line characters can be used as a row separator.
387   • hdist, idist, sdist, smig: New interval numeric functions
388   • User manual: Relicensed under GPL, added examples from the former
389     Octave SIMP package, and various minor improvements.
390
391Bugfixes
392   • mtimes: Fixed matrix-vector multiplication of decorated intervals
393   • Fixed a linking error in mkoctfile that could prevent package
394     installation (bug #45280)
395
396Version 0.2.1 2015-05-30
397========================
398
399   • plot, plot3: New interval plotting functions.  Pay attention to the
400     included examples, which can be executed with ‘demo @infsup/plot401     and ‘demo @infsup/plot3’ respectively.
402   • polyval: New interval arithmetic algorithm
403   • bisect: New set operation for bisecting algorithms
404   • sinrev, cosrev, tanrev, atan2rev1, atan2rev2: Now allow non-scalar
405     arguments
406   • Simplified licensing: Relicensed parts of the software that were
407     not under GPL
408   • Updated information for citation of the package
409
410Bugfixes
411   • Fixed generation of the manual in PDF format
412   • subsasgn: Fixed cases where decoration could be lost (bug #42735)
413
414Version 0.2.0 2015-05-03
415========================
416
417   • User manual included in the package, see doc/manual.texinfo
418   • New utility functions: cat, postpad, prepad, reshape, resize
419   • and, or: Removed deprecated functions
420   • Improved display output for cell arrays and new function: disp
421   • Minor performance improvements (all decorated interval functions,
422     horzcat, vertcat)
423
424Bugfixes
425   • issquare, isrow, iscolumn: Fixed compatibility issues with GNU
426     Octave 4.0
427   • cbrt: Allow negative values as parameter
428   • cot: Fixed accuracy for x = 0
429   • cos, csc, sec, sin: Fixed correctness in certain cases
430   • Prevent multibyte characters in Microsoft Windows console
431
432Version 0.1.5 2015-04-06
433========================
434
435   • Implicit decoration of bare intervals triggers a warning now and
436     can be allowed or forbidden by the user.  Implicit decoration of
437     bare interval literals is not affected.
438   • newdec: New operation for explicit promotion of bare intervals into
439     decorated intervals (without warning).
440   • Decorated interval literals with illegal decoration are no longer
441     allowed and produce NaIs.
442   • hull: In contrast to the union function, the interval constructor
443     is no longer considered a set operation and can create intervals
444     with a non-trivial decoration.
445   • setdiff, setxor: New set operations
446   • intersect, union: Renamed set operations; the old function names
447     (and, or) are hereby deprecated and are going to be removed in the
448     next release.
449   • intervaltotext, intervaltoexact: Decimal fractions no longer omit
450     zero before the point, and unnecessary trailing decimal places can
451     be omitted more consistently and in more cases than before (also
452     affects console output).  Improved accuracy and performance with
453     support for interval matrices.
454
455Bugfixes
456   • mtimes, mldivide: Support for broadcasting of scalar parameters
457   • nextout: Support for decorated intervals
458   • An error in GNU Octave core, which could lead to lost or wrong
459     interval decorations, no longer affects decorated intervals
460     (bug #42735)
461   • Some errors in the function documentation have been fixed (thanks
462     to doctest-for-matlab and Colin’s texinfo compatibility patches)
463   • Fixed interval field access on Windows
464
465Version 0.1.4 2015-03-15
466========================
467
468   • New interval constructors: hull, midrad
469   • New interval arithmetic functions: cbrt, cot, coth, csc, csch,
470     dilog, ei, erf, erfc, gamma, gammaln, psi, rsqrt, sec, sech
471   • mtimes: Support for fast, less accurate evaluation using BLAS
472     routines
473   • mldivide, mrdivide, inv: Improved performance by using faster
474     mtimes
475   • infsup, infsupdec: Enabled broadcasting of scalar boundaries
476   • rad: May compute mid and rad simultaneously
477   • subsref: Access to interval properties using field syntax: x.inf
478     and x.sup
479
480Version 0.1.3 2015-02-24
481========================
482
483   • Fixed a compile error that could possibly occur during package
484     installation
485
486Version 0.1.2 2015-02-22
487========================
488
489   • New interval arithmetic functions: nthroot, hypot, log1p, expm1
490   • lu: New operation for LU(P) decomposition of interval matrices
491   • nai: New decorated interval constant
492   • mldivide, mrdivide, inv: Greatly improved accuracy and performance
493     of the linear solver
494   • Improved accuracy of vector sums, dot products, pownrev, and
495     powrev2
496   • powrev1, powrev2, pownrev, mulrev: Now allow non-scalar arguments
497   • overlap: Renamed one overlapping state from equal to equals
498   • mulrevtopair: No longer available, use mulrev with two output
499     parameters for two-output division
500   • setdec: No longer available, use infsupdec instead
501   • Small performance improvements
502
503Bugfixes
504   • Compatibility with GNU Octave 4.0 (bug #43925)
505   • Build problems during package installation with environment
506     variables
507   • iscommoninterval: The decorated variant must return true for common
508     intervals without com decoration
509   • eq: The decorated variant must not consider the decoration value
510   • Several decorated functions: When evaluated on a subset of the
511     function’s domain, the result’s decoration must be dac if the
512     function’s restriction to that subset is continuous
513   • Decorated boolean functions: Must return false when evaluated on
514     NaI input
515   • Interval constructors: A PossibleUndefined warning must be issued
516     if an interval is created from two very close decimal numbers
517     (which can not be separated in the floating-point context) where
518     the lower boundary is greater than the upper boundary when compared
519     with infinite precision
520   • Interval constructors: NaNs must produce empty intervals
521   • Decorated interval constructor: Illegal decorations for empty
522     intervals must be adjusted to trv, and illegal decoration com for
523     unbounded intervals must be adjusted to dac.
524cancelminus/cancelplus: The functions returned wrong results if the
525     interval widths could not be compared in double-precision
526   • cos: Accuracy for x = [0] improved
527   • pow, powrev1, powrev2: The function must be defined for x = 0 and
528     y > 0
529   • All reverse operations: Must return a trivial decoration
530     information at best (the only exception is mulrev)
531
532Version 0.1.1 2015-02-01
533========================
534
535   • Increased speed of computation for large matrices
536   • Improved performance for fma and dot
537   • mpfr_vector_dot_d: Changed syntax for faster computation on
538     intervals
539   • Decorated versions of mtimes, mldivide, mpower, inv and reduction
540     operations sum, dot, subabs, subsquare
541   • Renamed function sumsquare to sumsq in accordance with GNU Octave
542     function names
543   • New function: fzero for finding all roots of an interval arithmetic
544     function
545
546Bugfixes
547   • nextout: Function returned wrong results
548   • exacttointerval: Now produces bare intervals instead of decorated
549     intervals in conformance with IEEE P1788
550   • atanh: Function returned wrong results for ±1
551   • dot: Function returned wrong results for some inputs
552   • fma: Function returned wrong results for some inputs
553   • infsup: Function returned wrong interval boundaries for decimal
554     numbers, function failed on mixed numerical and string boundaries
555     in single cell array parameter
556   • mulrevtopair: Fixed order of operands in conformance with
557     IEEE P1788 and wrong results when evaluated on intervals that
558     contain zero
559
560Version 0.1.0 2015-01-21
561========================
562
563   • Initial release version, which already contains all required
564     operations of the preliminary standard document IEEE P1788.
565
566