a*x
+
b
with just one rounding. Conceptually, this is no different from the other examples of this chapter, though the implementation may be complicated. As in the case of dividing 1 by 3, computing a*x
+
b
with just one rounding entails computing enough significant bits of the mathematical value to guarantee correct rounding. The fused multiply-add is invisible in C++, though it is used to advantage in certain finely tuned library functions.
NOTE
The availability of fused multiply-add complicates the analysis of some computations. An expression like a*x + b*y
with double values can yield three different results depending on whether fused multiply-add is used for the first product, the second, or neither. Which of the three results is most accurate depends on the four values; it's easy to find ordinary arguments making any one of the three possibilities the most accurate.