Floating-point addition (source code)

= Floating-point addition

To add two finite <floating-point numbers>, compare their <exponents>, shift the smaller <significand> to a common <exponent>, add or subtract the signed <significands>, normalize the result, and apply <floating-point rounding>. Extra low-order <bits> are needed to determine correct rounding when shifting or cancellation discards information. A carry beyond the leading digit increases the <exponent>; cancellation can decrease it. Unlike exact real <addition>, this operation need not be associative. Changing the child evaluation order in a fixed <binary expression tree> need not change its parenthesization, whereas reassociation changes which intermediate results undergo <floating-point rounding>.