From 35385268c52402f3f526ec18bbdce3dc60e883a7 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 4 Oct 2026 03:19:06 +0200 Subject: [PATCH] design.md: the affine rounding paragraph names the underflow, overflow and pinning tests Co-Authored-By: Claude Sonnet 5.5 --- packages/cultmath/docs/design.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/cultmath/docs/design.md b/packages/cultmath/docs/design.md index 8720661a..5418056f 100644 --- a/packages/cultmath/docs/design.md +++ b/packages/cultmath/docs/design.md @@ -724,7 +724,14 @@ magnitudes its roundings are relative to (named in the op's comment): at most `8u S` is needed with `u = 2^-24`, and the factor of two over that is the allowance for a device whose `+` and `*` are faithful rather than correctly rounded. `AffineTests.EveryOpEnclosesItsPoints` evaluates the form's set in -double and the function in float32 with no tolerance. +double and the function in float32 with no tolerance. Products and `af_from_iv` also +add `2^-126`, the most an underflow to a subnormal can lose (`TinyOperandsEncloseTheirPoints`). +`af_from_iv` halves its endpoints before it sums and differences them, and `af_range` +scales its terms before it sums them, so endpoints near the float maximum do not overflow +in the middle of the op; a form that overflows anyway gives `af_range` infinite endpoints, +never NaN (`FromIntervalAndRangeHoldAtTheExtremes`). `AbsorptionsArePinned` and +`SnoiseFormCarriesItsDocumentedWidth` pin each absorption and `af_snoise`'s float32 allowance both +ways: the enclosure tests alone cannot see them on a CPU, where float32 is exact. `af_snoise(centre, axis, radius)` encloses `snoise` over `centre + axis eps + w`, `|w| <= radius`, from one `snoise_grad`. It returns the narrower of the