matthias_buehlmann
matthias_buehlmann

Reputation: 5061

Does IEEE 754 float division or subtraction by itself always result in the same value?

Unless an IEEE 754 is NaN, +-0.0 or +-Infinity, is dividing by itself guaranteed to result in exactly 1.0?

Similarly, is subtracting itself guaranteed to always result in +-0.0?

Upvotes: 4

Views: 428

Answers (2)

Eric Postpischil
Eric Postpischil

Reputation: 222876

IEEE 754-2008 4.3 says:

… Except where stated otherwise, every operation shall be performed as if it first produced an intermediate result correct to infinite precision and with unbounded range, and then rounded that result according to one of the attributes in this clause.

When an intermediate result is representable, all of the rounding attributes round it to itself; rounding changes a value only when it is not representable. Rules for subtraction and division are given in 5.4, and they do not state exceptions for the above.

Zero and one are representable per 3.3, which specify the sets of numbers representable in any format conforming to the standard. In particular, zero may be represented by a significand with all zero digits, and one may be represented with a significand starting with 1 and followed by “.000…000” and an exponent of zero. The minimum and maximums exponents of a format are defined so that they always include zero (emin is 1−emax, so zero is between them, inclusive, unless emax is less than 1, in which case no numbers are representable, i.e. the format is empty and not an actual format).

Since rounding does not change representable values and zero and one are representable, dividing a finite non-zero value by itself always produces one, and subtracting a finite value from itself always produces zero.

Upvotes: 4

Swift - Friday Pie
Swift - Friday Pie

Reputation: 14589

Dividing and substracting from itself, if same literal value was used - yes, IEEE754 requires to produce closest and cosistent match.

Upvotes: 0

Related Questions