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.
Proof-facing specification of the successful normal-product path.
The optimized word backends use different integer representations, but successful normal results all have this format-independent meaning. Keeping the specification here prevents one specialized backend from becoming a proof dependency of another.
Instances For
A successful normal-product specification result is exactly the arbitrary-precision product rounder.
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.
Unsigned-scale product rounding agrees with the public exact-dyadic rounder for a conventional IEEE descriptor.