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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 22 May 2026 11:28PM UTC
Jobs 1
Files 651
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

22 May 2026 11:01PM UTC coverage: 84.225% (-0.02%) from 84.243%
26316090523

push

github

web-flow
refactor(elreal): back out for McCleeary LFPERA rewrite (#922)

* revert(elreal): back out for McCleeary LFPERA rewrite

Removes the entire elreal implementation, tests, benchmarks, oracle
helpers, performance baseline, and dependent documentation. The type
will be reimplemented from scratch following Chapter 4 of McCleeary's
2019 dissertation.

Why this backout
================

The shipped elreal (PRs #883-#900, plus follow-ups through #918 and
#920) built a Shewchuk-style multi-component representation with
McCleeary-style lazy materialisation grafted on top. The two halves
work cleanly at depth 0 and depth 1 (the EFTs preserve Shewchuk's
non-overlap exactly for one-step operations) and approximately at
depth 2 (the dropped EFT residuals are still small enough). Depth-3+
breaks the non-overlap property by ~ 1.5x because the simplified
closed-form formulas drop EFT residuals that matter at that order
(documented in #921 before the read of the dissertation).

A closer read of the McCleeary 2019 dissertation (Chapter 4) made
clear that the prior implementation diverges from the algorithm
McCleeary actually defines:

- McCleeary's representation is `ZBCL_k` -- a co-list of k-bit
  blocks where each block carries (sign, exponent, k-bit vector),
  not raw IEEE doubles
- The invariant is the 0-overlap (gap) property
  `e_n >= e_{n+1} + k`, NOT Shewchuk's tighter
  `|c_{i+1}| <= ulp(c_i)/2`
- The gap leaves an "imp" bit between blocks that absorbs
  carry-ups from later refinement -- this is what makes
  left-to-right lazy block emission correct without
  renormalisation
- Arithmetic primitives operate block-to-block (`twoSum`,
  `twoMult`, `twoDiv` on blocks) with `threeAdd`-style helpers
  that maintain a workspace and commit blocks only when the gap
  to the next block is provable

The shipped implementation uses none of this. It builds Shewchuk
expansions and pretends they're lazy. The L.2.c failure was the
predictable consequence of that mismatch.

De... (continued)

46938 of 55729 relevant lines covered (84.23%)

5283896.99 hits per line

Coverage Regressions

Lines Coverage ∆ File
5
50.45
-4.5% include/sw/universal/verification/posit_test_suite_randoms.hpp
4
89.23
-1.1% include/sw/universal/number/posito/posito_impl.hpp
1
80.58
-0.22% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 26316090523.1 22 May 2026 11:28PM UTC 651
84.23
GitHub Action Run
Source Files on build 26316090523
  • Tree
  • List 651
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26316090523
  • 85cb5e50 on github
  • Prev Build on main (#26306743851)
  • Next Build on main (#26318342896)
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