Scientific Computing on Itanium-Based Systems

The important concept of a unit in the last place ( ulp) and its relation to relative error will be made precise first, since this is useful to understand some of the techniques that follow. As the name suggests, one ulp is essentially the numerical value of the least significant bit in a floating point number, or in other words, the distance from a floating-point number to its nearest neighboring floating-point number. However, the precise technical definition is more subtle than it appears, and several standard references differ. For example, "What Every Computer Scientist Should Know About Floating Point Arithmetic" by Goldberg [18] and "Elementary Functions: Algorithms and Implementation" by Muller [19] give incompatible definitions, neither of which coincides with the definition given here. Given an arbitrary real number x (not necessarily a floating-point number) and a floating-point format F, ulp F (x), or one ulp of x in the floating-point format F (often written just ulp( x) if the format F is understood implicitly) is defined as follows.
If x is not exactly a floating-point number in F, then let x ? and x + be the closest floating-point numbers in F immediately below and immediately above x, respectively. Then ulp F ( x) = x + ? x ?. That is, is ulp( x) the distance between the two floating-point numbers that surround