An **interval** is a subset of consecutive real numbers. For example,
the interval ``[2 .. 4]'` represents all the numbers from 2 to 4,
inclusive. If you multiply it by the interval ``[0.5 .. 2]'` you
obtain ``[1 .. 8]'`. This calculation represents the fact that if
you multiply some number in the range ``[2 .. 4]'` by some other
number in the range ``[0.5 .. 2]'`, your result will lie in the range
from 1 to 8. Interval arithmetic is used to get a worst-case estimate
of the possible range of values a computation will produce, given the
set of possible values of the input.

The lower and upper limits of an interval must be either real numbers
(or HMS or date forms), or symbolic expressions which are assumed to be
real-valued, or ``-inf'` and ``inf'`. In general the lower limit
must be less than the upper limit. A closed interval containing only
one value, ``[3 .. 3]'`, is converted to a plain number (3)
automatically. An interval containing no values at all (such as
``[3 .. 2]'` or ``[2 .. 2)'`) can be represented but is not
guaranteed to behave well when used in arithmetic. Note that the
interval ``[3 .. inf)'` represents all real numbers greater than
or equal to 3, and ``(-inf .. inf)'` represents all real numbers.
In fact, ``[-inf .. inf]'` represents all real numbers including
the real infinities.

Intervals are entered in the notation shown here, either as algebraic
formulas, or using incomplete forms. (See section Incomplete Objects.)
In algebraic formulas, multiple periods in a row are collected from
left to right, so that ``1...1e2'` is interpreted as ``1.0 .. 1e2'`
rather than ``1 .. 0.1e2'`. Add spaces or zeros if you want to
get the other interpretation. If you omit the lower or upper limit,
a default of ``-inf'` or ``inf'` (respectively) is furnished.

"Infinite mode" also affects operations on intervals
(see section Infinities). Calc will always introduce an open infinity,
as in ``1 / (0 .. 2] = [0.5 .. inf)'`. But closed infinities,
``1 / [0 .. 2] = [0.5 .. inf]'`, arise only in infinite mode;
otherwise they are left unevaluated. Note that the "direction" of
a zero is not an issue in this case since the zero is always assumed
to be continuous with the rest of the interval. For intervals that
contain zero inside them Calc is forced to give the result,
``1 / (-2 .. 2) = [-inf .. inf]'`.

While it may seem that intervals and error forms are similar, they are
based on entirely different concepts of inexact quantities. An error
form `*x* `+/-` @c{$\sigma$}
*sigma*' means a variable is random, and its value could
be anything but is "probably" within one @c{$\sigma$}
*sigma* of the mean value x.
An interval ``[`*a* `..` *b*`]`' means a variable's value
is unknown, but guaranteed to lie in the specified range. Error forms
are statistical or "average case" approximations; interval arithmetic
tends to produce "worst case" bounds on an answer.

Intervals may not contain complex numbers, but they may contain HMS forms or date forms.

See section Set Operations using Vectors, for commands that interpret interval forms as subsets of the set of real numbers.

The algebraic function ``intv(n, a, b)'` builds an interval form
from ``a'` to ``b'`; ``n'` is an integer code which must
be 0 for ``(..)'`, 1 for ``(..]'`, 2 for ``[..)'`, or
3 for ``[..]'`.

Please note that in fully rigorous interval arithmetic, care would be
taken to make sure that the computation of the lower bound rounds toward
minus infinity, while upper bound computations round toward plus
infinity. Calc's arithmetic always uses a round-to-nearest mode,
which means that roundoff errors could creep into an interval
calculation to produce intervals slightly smaller than they ought to
be. For example, entering ``[1..2]'` and pressing `Q 2 ^`
should yield the interval ``[1..2]'` again, but in fact it yields the
(slightly too small) interval ``[1..1.9999999]'` due to roundoff
error.

Go to the first, previous, next, last section, table of contents.