Interval package: Difference between revisions

Jump to navigation Jump to search
403 bytes added ,  2 September 2018
m
Rename "Octave-Forge" to "Octave Forge" (https://lists.gnu.org/archive/html/octave-maintainers/2018-08/msg00138.html).
(Updated links and developer information, added reference to other IEEE 1788 software and new IEEE Std 1788.1)
m (Rename "Octave-Forge" to "Octave Forge" (https://lists.gnu.org/archive/html/octave-maintainers/2018-08/msg00138.html).)
(7 intermediate revisions by one other user not shown)
Line 1: Line 1:
The GNU Octave interval package for real-valued [https://en.wikipedia.org/wiki/Interval_arithmetic interval arithmetic].
The GNU Octave interval package for real-valued [https://en.wikipedia.org/wiki/Interval_arithmetic interval arithmetic].
* Intervals are closed, connected subsets of the real numbers. Intervals may be unbound (in either or both directions) or empty. In special cases <code>+inf</code> and <code>-inf</code> are used to denote boundaries of unbound intervals, but any member of the interval is a finite real number.
* Classical functions are extended to interval functions as follows: The result of function f evaluated on interval x is an interval '''enclosure of all possible values''' of f over x where the function is defined. Most interval arithmetic functions in this package manage to produce a very accurate such enclosure.
* The result of an interval arithmetic function is an interval in general. It might happen, that the mathematical range of a function consist of several intervals, but their union will be returned, e. g., 1 / [-1, 1] = [Entire].


[[File:Interval-sombrero.png|280px|thumb|right|Plotting the interval enclosure of a function]]  
__TOC__
[[File:Interval-sombrero.png|280px|thumb|left|Example: Plotting the interval enclosure of a function]]
<div style="clear:left"></div>


== Distribution ==
== Distribution ==
Line 188: Line 193:
* Methods with more than 1 parameter must convert non-interval parameters to intervals using the class constructor. This allows the user to mix non-interval parameters with interval parameters and the function treats any inputs as intervals. Invalid values will be handled by the class constructors.
* Methods with more than 1 parameter must convert non-interval parameters to intervals using the class constructor. This allows the user to mix non-interval parameters with interval parameters and the function treats any inputs as intervals. Invalid values will be handled by the class constructors.
  if (not (isa (x, "infsup")))
  if (not (isa (x, "infsup")))
    x = infsup (x);
  x = infsup (x);
  endif
  endif
  if (not (isa (y, "infsup")))
  if (not (isa (y, "infsup")))
    y = infsup (y);
  y = infsup (y);
  endif
  endif


  if (not (isa (x, "infsupdec")))
  if (not (isa (x, "infsupdec")))
    x = infsupdec (x);
  x = infsupdec (x);
  endif
  endif
  if (not (isa (y, "infsupdec")))
  if (not (isa (y, "infsupdec")))
    y = infsupdec (y);
  y = infsupdec (y);
  endif
  endif


Line 210: Line 215:


If Octave functions would introduce arithmetic/rounding errors, there are interfaces to MPFR (<code>mpfr_function_d</code>) and crlibm (<code>crlibm_function</code>), which can produce guaranteed boundaries.
If Octave functions would introduce arithmetic/rounding errors, there are interfaces to MPFR (<code>mpfr_function_d</code>) and crlibm (<code>crlibm_function</code>), which can produce guaranteed boundaries.


==== Vectorization & Indexing ====
==== Vectorization & Indexing ====
Line 227: Line 231:
== VERSOFT ==
== VERSOFT ==
The [http://uivtx.cs.cas.cz/~rohn/matlab/ VERSOFT] software package (by Jiří Rohn) has been released under a free software license (Expat license) and algorithms may be migrated into the interval package.
The [http://uivtx.cs.cas.cz/~rohn/matlab/ VERSOFT] software package (by Jiří Rohn) has been released under a free software license (Expat license) and algorithms may be migrated into the interval package.
The following table is no longer up-to-date, it describes the situation before p-coded files have been disclosed. So, some functions are no longer trapped.


{|
{|
Line 247: Line 249:
|verdet
|verdet
|style="color:red"| trapped
|style="color:red"| trapped
| depends on p-coded <code>ol</code>
| depends on <code>vereig</code>
|-
|-
|verdistsing
|verdistsing
Line 254: Line 256:
|-
|-
|verfullcolrank
|verfullcolrank
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>zd</code>
| depends on <code>verpinv</code>
|-
|-
|vernorm2
|vernorm2
Line 296: Line 298:
|-
|-
|vereig
|vereig
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>ol</code>
| depends on proprietary <code>verifyeig</code> function from INTLAB, depends on complex interval arithmetic
|-
|-
|<s>vereigback</s>
|<s>vereigback</s>
Line 305: Line 307:
|verspectrad
|verspectrad
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|colspan="3"|Real (or complex) data only: Matrices: Decompositions
|colspan="3"|Real (or complex) data only: Matrices: Decompositions
Line 319: Line 321:
|verspectdec
|verspectdec
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|verthinsvd
|verthinsvd
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>ol</code>
| implemented in <code>vereig</code>
|-
|-
|colspan="3"|Real (or complex) data only: Matrix functions
|colspan="3"|Real (or complex) data only: Matrix functions
Line 329: Line 331:
|vermatfun
|vermatfun
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|colspan="3"|Real data only: Linear systems (rectangular)  
|colspan="3"|Real data only: Linear systems (rectangular)  
Line 348: Line 350:
|-
|-
|verlcpall
|verlcpall
|style="color:red"| trapped
|style="color:green"| free
| depends on <code style="color:red">verabsvaleqnall</code>
| depends on <code>verabsvaleqnall</code>
|-
|-
|<s>verlinprog</s>
|<s>verlinprog</s>
Line 356: Line 358:
|-
|-
|verlinprogg
|verlinprogg
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>at</code>
| depends on <code>verfullcolrank</code>
|-
|-
|verquadprog
|verquadprog
Line 367: Line 369:
|verroots
|verroots
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|colspan="3"|Interval (or real) data: Matrices
|colspan="3"|Interval (or real) data: Matrices
Line 376: Line 378:
|-
|-
|verinverse
|verinverse
|style="color:red"| trapped
|style="color:green"| free
| depends on <code style="color:red">verintervalhull</code>
| depends on <code style="color:green">verintervalhull</code>, to be migrated
|-
|-
|<s>verinvnonneg</s>
|<s>verinvnonneg</s>
Line 388: Line 390:
|verregsing
|verregsing
|style="color:red"| trapped
|style="color:red"| trapped
| dependency <code>verifylss</code> is implemented as <code>mldivide</code>; depends on <code>isspd</code> (by Rump, to be checked) and <code style="color:red">verintervalhull</code>; see also [http://uivtx.cs.cas.cz/~rohn/publist/singreg.pdf]
| dependency <code>verifylss</code> is implemented as <code>mldivide</code>; depends on <code>isspd</code> (by Rump, to be checked) and <code>verintervalhull</code>; see also [http://uivtx.cs.cas.cz/~rohn/publist/singreg.pdf]
|-
|-
|colspan="3"|Interval (or real) data: Matrices: Eigenvalues and singular values
|colspan="3"|Interval (or real) data: Matrices: Eigenvalues and singular values
Line 394: Line 396:
|vereigsym
|vereigsym
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>, depends on <code style="color:red">verspectrad</code>
| main part implemented in <code>vereig</code>, depends on <code style="color:red">verspectrad</code>
|-
|-
|vereigval
|vereigval
Line 424: Line 426:
|-
|-
|verenclinthull
|verenclinthull
|style="color:red"| trapped
|style="color:green"| free
| main part implemented in p-coded <code>ea</code>
| to be migrated
|-
|-
|verhullparam
|verhullparam
|style="color:red"| encrypted
|style="color:green"| free
| implemented in p-coded <code>jz</code>
| depends on <code>verintervalhull</code>, to be migrated
|-
|-
|verhullpatt
|verhullpatt
|style="color:red"| trapped
|style="color:green"| free
| main part implemented in p-coded <code>jz</code>
| depends on <code>verhullparam</code>, to be migrated
|-
|-
|verintervalhull
|verintervalhull
|style="color:red"| encrypted
|style="color:green"| free
| implemented in p-coded <code>intervalhull</code> (find algorithm in [http://uivtx.cs.cas.cz/~rohn/publist/intervalhull.pdf])
| to be migrated
|-
|-
|colspan="3"|Interval (or real) data: Linear systems (rectangular)
|colspan="3"|Interval (or real) data: Linear systems (rectangular)
Line 463: Line 465:
|-
|-
| verabsvaleqn
| verabsvaleqn
|style="color:red"| trapped
|style="color:green"| free
| main part implemented in p-coded <code>ek</code> (find algorithm in [http://uivtx.cs.cas.cz/~rohn/publist/signaccalg.pdf], improved version in [http://uivtx.cs.cas.cz/~rohn/publist/absvaleqnreport.pdf])
| to be migrated
|-
|-
| verabsvaleqnall
| verabsvaleqnall
|style="color:red"| trapped
|style="color:green"| free
| depends on <code style="color:red">verabsvaleqn</code>, see also [http://uivtx.cs.cas.cz/~rohn/publist/absvaleqnall.pdf]
| depends on <code>verabsvaleqn</code>, see also [http://uivtx.cs.cas.cz/~rohn/publist/absvaleqnall.pdf], to be migrated
|-
|-
| verbasintnpprob
| verbasintnpprob
Line 477: Line 479:




[[Category:Octave-Forge]]
[[Category:Octave Forge]]

Navigation menu