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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 23 May 2026 12:08PM UTC
Jobs 1
Files 656
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

23 May 2026 11:42AM UTC coverage: 84.291% (+0.03%) from 84.264%
26331745527

push

github

web-flow
feat(elreal): Phase 3 -- block-level error-free transforms (#936)

* feat(elreal): Phase 3 -- block-level error-free transforms

Phase 3 of the McCleeary LFPERA reimplementation (epic #923). Lands the
six EFT primitives at the block layer, parameterised over FpType:

  block_two_sum(a, b)    -> (high, low)    exact: high + low = a + b
  block_two_sum_rn(a, b) -> high           rounded a + b
  block_two_mult(a, b)   -> (high, low)    exact: high + low = a * b
  block_two_mult_rn(a,b) -> high           rounded a * b
  block_two_div(a, b)    -> (high, low)    a/b = high + low (approx)
  block_two_div_rn(a, b) -> high           rounded a / b

Implementation
- Generic Knuth twoSum, generic Veltkamp-split + Dekker twoProd, and
  Bailey-style twoDiv, ALL using the host FpType's arithmetic directly
  (no promote-to-double-then-snap shortcuts). For native double we
  specialise to the existing error_free_ops.hpp implementations (volatile-
  protected, FMA-aware).
- Veltkamp splitter is computed once per FpType as
  `2^ceil(digits/2) + 1` and cached in a function-local static.

Semantics
- block_two_sum: precondition a.exp_offset == b.exp_offset; result blocks
  share the same offset. Cross-offset addition is a Phase 4 concern
  (threeAdd).
- block_two_mult: out_off = a.exp_offset + b.exp_offset.
- block_two_div: out_off = a.exp_offset - b.exp_offset. Asserts b != 0.

Value-preservation tolerance
- Ideal IEEE-correct host arithmetic produces an EXACT EFT residual
  (high + low == a op b bit-identically). Universal's wider cfloat<N,E>
  multiplications can leak a few ulp^2 from imperfect intermediate
  precision -- this faithfully reflects what custom hardware at FpType's
  precision would compute. Tests allow ~128 * ulp^2 of slack, still
  ~1000x smaller than a single ulp so any genuine algorithm regression
  (off-by-1-ulp) is caught.

Files
- include/sw/universal/number/elreal/block_eft.hpp: primitives + detail
  namespace with generic host EFTs and double spe... (continued)

53 of 53 new or added lines in 1 file covered. (100.0%)

3 existing lines in 1 file now uncovered.

47113 of 55893 relevant lines covered (84.29%)

5269964.11 hits per line

Coverage Regressions

Lines Coverage ∆ File
3
80.58
-0.67% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 26331745527.1 23 May 2026 12:07PM UTC 656
84.29
GitHub Action Run
Source Files on build 26331745527
  • Tree
  • List 656
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26331745527
  • 24281113 on github
  • Prev Build on main (#26321362299)
  • Next Build on main (#26332478004)
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