• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stillwater-sc / universal / 27021302154 / 1
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: feat/issue-1061-online-muldiv
DEFAULT BRANCH: master
Ran 05 Jun 2026 03:20PM UTC
Files 674
Run time 25s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 Jun 2026 02:37PM UTC coverage: 84.529% (-0.03%) from 84.558%
27021302154.1

push

github

web-flow
fix(elreal): addRec_step emits the canonical 0-overlap form (#1057) (#1064)

add()'s streaming addRec_step could emit a VALUE-CORRECT but NON-canonical (0-overlap-
violating) expansion. Root cause (instrumented): the gs-empty / fs-empty re-injection
path (FCL.hs `addRec fs [] (e:es) bound = e:...`) emitted the workspace head `e`
unconditionally. But a prior twoSum merge can LOWER e's exponent toward an un-merged
operand block -- e.g. a1@146 + residual -> @142 while the canonical a2@91 is now only
51 < k below it -- and a carry can push the operand one bit higher still. Emitting e
then leaves an adjacent pair closer than k.

Fix: before emitting the workspace head, fold any remaining operand block whose exponent
is >= head.exponent() - k into the workspace via priestAdd (which renormalises). The
">=" accounts for the +1 carry a same-exponent merge can produce. Applied symmetrically
to the gs-empty and fs-empty paths.

This is the root of both #1057's exact-cancellation symptom (asin+acos) AND the #1061
streaming-infSum blocker (repeated add composition). It also subsumes the leading-pair
overlap class (#1044) in the streaming path.

Validation:
- minimal repro: add gives canonical (...,87,...) matching priestRenorm
- 1,000,000 randomized single-adds: 0 0-overlap violations (asserts ON), value exact
- left-fold composition n=3..20: 0 violations, value == eager sum()
- full elreal suite (34 tests) PASS on gcc AND clang; no regressions
- regression test added to el_arith_add_renormalization (minimal repro + 50k fuzz vs the
  exact-dyadic oracle), passes gcc + clang

Resolves #1057

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

47611 of 56325 relevant lines covered (84.53%)

6031922.74 hits per line

Source Files on job 27021302154.1
  • Tree
  • List 674
  • Changed 4
  • Source Changed 1
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 27021302154
  • 9374c4a2 on github
  • Prev Job for on main (#26991696085.1)
  • Next Job for on main (#27026597449.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc