Correctness of unsigned-scale product rounding #
round_eq_roundDyadic identifies unsigned-scale rounding with roundDyadic for descriptors
satisfying fmt.isIEEE = true. The equality covers signed zero, subnormal results, carry
normalization, and overflow.
normalSpec_refines supplies the common natural-number normal-product contract used by word
backends. round_normalized_sum gives the one-bit nearest-even reduction used by equal-exponent
addition.
Specification of the successful normal-product path.
The word backends use different integer representations, but their successful normal results all have this format-independent meaning. Keeping it here stops one specialized backend from becoming a proof dependency of another.
Instances For
A successful normalSpec? result is the result of the arbitrary-precision product rounder
round.
Significands at least 2 ^ fmt.fracWidth satisfy the side conditions of normalSpec_refines.
Adding two normalized significands at one encoded exponent discards exactly one low bit.
This is the format-independent part of equal-exponent native addition. Word backends still prove
that their machine addition and packing operations represent the Nat expression below, but the
rounding argument is shared by every binary descriptor.
Compressing low bits into a sticky bit preserves the rounded encoding when two bits remain below the destination significand. The same bound covers normal and subnormal rounding.
Unsigned-scale product rounding agrees with the public exact-dyadic rounder for a conventional IEEE descriptor.