# Are IEEE floating point numbers intervals or point values?

The context is IEEE 754-2008 floating point number systems. The systems defined by the standard comprise, as far as I understand it, a bit-level representation and a set of guarantees on the precision for a given number of computations.

Now, I am wondering whether floating point numbers, i.e., the objects represented and manipulated in such a system, should be looked at as intervals—a contiguous set real numbers—or as point values—a unique real number. (Which interval? Crudely, with round-to-nearest, the nominal value plus-or-minus half a ulp.)

The arguments for intervals I see come mostly from the representational aspects of the system:

1. Numbers from ‘outside’ of the system—measurement data, say—are encoded with reduced precision and so the bit-level representation is in general clearly not the ‘true’ value, but—given the information about the rounding rule used—represents an interval in which the ‘true’ value lies.

2. Numbers from ‘inside’ of the system that are the result of a series of computations within the system have also been subject to the effects of intermediate rounding and so again—given the information about the rounding rule used—represents an interval in which the ‘true’ resulting value of the computation lies.

The arguments for point values I see come from the computational aspects of the system and the typical discussions of floating point:

1. Computations are performed on the real value that nominally corresponds to the bit-level representation, using some extra bits to enable precision guarantees. They are not applied to the interval bounds implied by the bit-level representation (and information about the rounding rule used in its generation), which would be possible in principle using some extra bits and double the effort (each computational step…). Put differently: interval analysis is not applied.

2. If interval analysis were used, rounding rules would not be needed.

3. In the discussions of floating point I have seen, they are always generally treated as point values, e.g., depicting them as discrete points on the real line.

Now, the above arguments are composed by someone that has not read up on the floating point literature in detail, so they may not represent the common view among knowledgeable people in the field. I would like to learn the views of these people and the arguments used. (So I am not necessarily looking for an answer ‘point values’/‘intervals’ to the binary question of the title of this question.)

I have not specified restrictions to the binary or decimal systems. This may be relevant, I feel: in the binary case, the representations are normalized, so no significance information is available, but in the decimal case, the representation is not normalized. This means, I think, that in the latter case a crude way of doing interval analysis is possible (by reducing the number of significant digits)—not that this means it is actually done—, but in the former case, such crude analysis is not possible (although it would be far less crude, given the small magnitude steps—factors of 2).

That has been long established. Most IEEE 754 floating point numbers represent exactly one real number. The exceptions are +0 and -0, +Inf and -Inf, and NaN with special meanings. (Thanks for one comment stating that "In IEEE Std 754-2008, Table 3.1 states that floating point numbers are projected into the (extended) reals, which implies that indeed they are seen as point values". )

If you tried to claim that IEEE 754 floating point numbers did represent intervals, then you would run into deep, deep trouble when you try to define floating-point arithmetic.

We can see that in the comments: There an assumption is made that a floating point number is or has an interval x ± eps. That assumption is wrong. Let u be the value of the last bit in the mantissa of 1.0. Then if say x = 1.5 all numbers in the interval [x - u/2, x + u/2] are rounded to x, but if x = 1.5 + u then that interval is (x - u/2, x + u/2) - an open interval instead of a closed one. And if x = 1.0, then the interval is [x - u/4, x + u/2]. Not even a symmetric interval!

And the suggested arithmetic with these intervals seems to be "we take the numbers in the middle of the intervals, calculate the result, and find the interval containing the result" - which is essentially arithmetic with "point" floating point numbers, with a bit of fuzz added at the beginning and the end.

When you try to convert between binary and decimal numbers, these intervals come into play for real if you want a high quality conversion, and from experience this is an absolute PITA. Don't go there unless you enjoy that kind of thing.

• Can you give a reference or expand your answer? As currently formulated (‘has been long established’, ‘deep trouble’) no arguments are given and my arguments are not addressed. Apr 17, 2017 at 13:19
• Define floating point addition if you interpret floating point numbers as intervals. When you've done it, come back. Defined as real numbers, the definition is simple: Perform the operation with real numbers, round to the nearest floating point number, with a special rule if the real number is exactly between two floating point numbers. Apr 18, 2017 at 0:45
• To satisfy your request: Take the numbers $x_1$ and $x_2$ and their respective interval bounds $x_1\pm\epsilon_1$ and $x_2\pm\epsilon_2$ where $\epsilon_i$ corresponds to half an ulp. Their floating point sum—as you describe—is $x_3$ with bounds $x_3\pm\epsilon_3$. Now, in general $\epsilon_3$ will differ from $\epsilon_1+\epsilon_2$, which determines the interval analysis bounds. So $\epsilon_3$ may be a bad approximation of $\epsilon_1+\epsilon_2$. Apr 18, 2017 at 15:46
• Now that I'm back: so you imply that my argument 3 is a or the reason to consider floating point numbers point values; I'm not convinced: looking at them as intervals immediately clarifies problematic cancellation: $\epsilon_3$ being smaller than $\epsilon_1+\epsilon_2$, no? That does not mean I'm right: but please, update your answer with arguments and references. Apr 18, 2017 at 15:49
• In IEEE Std 754-2008, Table 3.1 states that floating point numbers are projected into the (extended) reals, which implies that indeed they are seen as point values. I'll mark this answer as the accepted one once this authoritative source is referred to. Sep 23, 2017 at 20:07