Correctness of two-word normal multiplication #
The runtime kernel multiplies two normal significands exactly in four native words, rounds the
product of at most 2 * fracWidth + 2 bits to nearest-even, and packs a normal result. Subnormal
operands and results, overflow, NaNs, and infinities are left to the operation dispatcher.
roundNormalProduct_refines accepts any four-limb magnitude in
[2^(2 * fracWidth), 2^(2 * fracWidth + 3)) together with its leading-bit position.
Scalar carry arithmetic #
multiplyLimbs, with its scalar carries, is mul128.
roundProduct, with its scalar carries, is roundShiftRightEven128 for every shift.
Threshold words #
The largest finite normal leading-bit position fits a native word.
The fraction width fits a native word.
Rounding a four-limb magnitude #
The fixed-limb normal branch agrees with generic unsigned product rounding.
Normal products #
Every result the pair multiplication kernel accepts is also returned by FiniteKernel.mul?.