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

stillwater-sc / universal / 32422306642
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 20 Aug 2026 10:45PM UTC
Jobs 1
Files 620
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

20 Aug 2026 10:01PM UTC coverage: 85.366% (-0.02%) from 85.39%
32422306642

push

github

web-flow
fix(elreal): normalise every host -- double was sitting on its own wall (#1362)

* fix(elreal): normalise every host -- double was sitting on its own wall

The gate was wrong, and the inconsistency it produced is what caught it.

#1361 excluded double from scale normalisation, on the theory that a
wide-exponent host never approaches its subnormal wall, and reported the
resulting bit-identical double path as the safety property. It was preserving a
bug. double's ceiling was 307 decimal digits and 2^-1021 -- its min_exponent --
is 1e-307. double was sitting exactly on its wall. The earlier reading that it
had "33 bits of headroom" at 2^-988 missed that 33 is less than k = 53: less than
a single block.

What exposed it was an ordering that cannot be true. Normalised float reached 319
digits while unnormalised double stopped at 307, even though double's exponent
range is eight times wider and the whole thesis is that exponent range sets the
ceiling. Two hosts limited by different mechanisms are not comparable; the
physical argument said so before any further measurement did.

Normalised, double reaches the 320-digit reference at 22 blocks, and its
representation runs past its own wall -- trailing exponent -1097 at depth 16,
-2793 (about 1e-841) at depth 48.

Theory and measurement now agree across every host. Blocks to reach the reference,
predicted as 1063/k against measured:

    double     k=53   20 predicted   22 measured   +10%
    float      k=24   44 predicted   50 measured   +14%
    bfloat16   k= 7  152 predicted   (146 digits at 53 blocks, climbing)

The excess is kSeriesGuard's internal working blocks. The ordering is now the
physically expected one: the widest host needs the fewest blocks.

double is no longer bit-identical to the pre-#1361 library. That was never the
right thing to preserve -- the old bits were a value cut off at the host's
exponent wall, and the new ones carry further. It is a change in reach, not in
what the retained digits... (continued)

43062 of 50444 relevant lines covered (85.37%)

7402772.58 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
7
95.39
-1.9% include/sw/universal/number/elreal/threeAdd.hpp
3
94.12
-4.41% include/sw/universal/number/elreal/infsum.hpp
Jobs
ID Job ID Ran Files Coverage
1 32422306642.1 20 Aug 2026 10:45PM UTC 620
85.37
GitHub Action Run
Source Files on build 32422306642
  • Tree
  • List 620
  • Changed 6
  • Source Changed 3
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32422306642
  • 386737c5 on github
  • Prev Build on main (#32389933375)
  • Next Build on main (#32429280776)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc