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

stillwater-sc / universal / 26733598966
84%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 01 Jun 2026 04:06AM UTC
Jobs 1
Files 664
Run time 1min
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

01 Jun 2026 03:30AM UTC coverage: 84.17% (+0.04%) from 84.131%
26733598966

push

github

web-flow
fix(elreal): addRec_step renormalization breaks 0-overlap (#1034) (#1036)

add() could emit a value-correct but non-0-overlap (and even out-of-order)
block stream whenever one operand stream became empty while the workspace still
held blocks that belonged between the pending blocks of the other operand.

Minimal trigger:
  add(2^-90, [2^0, 2^-60]) -> [2^0, 2^-90, 2^-60]   (wrong: out of order)
  correct                  -> [2^0, 2^-60]

Root cause: in addRec_step's "one operand empty, workspace non-empty" cases, the
code drained the workspace (emitting workspace.front() repeatedly) and then
streamed the non-empty operand -- never merging that operand against the leftover
workspace. The dissertation's addRec re-injects the workspace tail into the
operand slot (`addRec fs [] (e:es) = e : addRec fs es []`), which the comment
even stated but the code did not do. Fix: after emitting the workspace head,
re-inject removeZeros(workspace tail) as a ZBCL into the now-empty operand slot
(symmetric for fs/gs) so the twoSum/threeAdd merge continues correctly. Adds a
zbcl_of_vec helper.

This fixes both the single-add case and the deep lazy-fold composition that
Phase 5 worked around via priestRenorm (a future sum() could now chain add()).

Regression test elastic/elreal/arithmetic/add_renormalization.cpp covers the
minimal trigger, the 2^(-30 i) regroup fold, and an operand landing between
workspace blocks; checks 0-overlap + exact dyadic value.

All 21 elreal tests pass on gcc and clang (Release) and with assertions on; no
regression in addition.cpp / threeAdd.cpp.

Resolves #1034

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

6 of 9 new or added lines in 1 file covered. (66.67%)

3 existing lines in 2 files now uncovered.

47095 of 55952 relevant lines covered (84.17%)

6028268.96 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
52.9
8.02% include/sw/universal/number/elreal/threeAdd.hpp

Coverage Regressions

Lines Coverage ∆ File
2
52.9
8.02% include/sw/universal/number/elreal/threeAdd.hpp
1
31.07
-0.36% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 26733598966.1 01 Jun 2026 04:06AM UTC 664
84.17
GitHub Action Run
Source Files on build 26733598966
  • Tree
  • List 664
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26733598966
  • 0c956fff on github
  • Prev Build on main (#26726097404)
  • Next Build on main (#26790633100)
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