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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 28 May 2026 03:06PM UTC
Jobs 1
Files 661
Run time 3min
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

28 May 2026 02:29PM UTC coverage: 84.001% (-0.003%) from 84.004%
26581102578

push

github

web-flow
test(elreal): independent exact dyadic oracle for Phase 1-4 building blocks (#1023)

* test(elreal): independent exact dyadic oracle for Phase 1-4 building blocks

Ports the ereal/#987 approach (dyadic_exact.hpp, an einteger-backed exact
dyadic-rational reference that shares no code with the algorithms under test) to
the elreal McCleeary substrate, removing the Phase 1-4 reliance on `long double`
-- which is not an exact oracle (it aliases double on MSVC/ARM/RISC-V, giving
zero headroom over the type under test). This is the Phase-5 precondition: lock
down a *validated* baseline before stacking more arithmetic on it.

New elastic/elreal/arithmetic/exact_value_oracle.cpp asserts, against the dyadic
oracle (exact(block) = from_double(double(b.v)) << b.exp; exact(ZBCL) = sum of
block dyadics):
  * block_two_sum / block_two_mult: exact(high)+exact(low) == exact(a){+,*}exact(b)
    bit-for-bit, with a nonzero error tolerated ONLY when the residual block is a
    nonzero subnormal (the cfloat<24,5> #942 representability floor). A wrong high
    part or a wrong NORMAL residual still fails.
  * threeAdd + add(): exact equality on the wide-exponent RN hosts.
Randomized + adversarial sweeps (cancellation, scale separation, classic
0.1+0.2). Strict-exact PASSES on all five round-to-nearest hosts:
float, double, half, cfloat<24,5> (modulo #942), cfloat<32,8>.

FINDING the loose Phase 1-4 tolerances were masking: bfloat16 is NOT an
exact-EFT host. It rounds toward zero (numeric_limits::round_style ==
round_toward_zero; its float->bf16 cast is `bits >> 16`, no rounding), and
Knuth/Dekker EFTs are exact only under round-to-nearest -- so on bfloat16 they
leak up to ~1 residual-ulp. This is intentional bfloat16 behaviour, not an elreal
bug; it makes elreal-over-bfloat16 inherently approximate (like the cfloat<24,5>
floor, but from the rounding mode rather than the exponent range). bfloat16 is
PINNED with a truncation bound (double is its exact reference -- ~45 bits of... (continued)

46879 of 55808 relevant lines covered (84.0%)

5787609.44 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 26581102578.1 28 May 2026 03:06PM UTC 661
84.0
GitHub Action Run
Source Files on build 26581102578
  • Tree
  • List 661
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26581102578
  • 1d4dfd6c on github
  • Prev Build on main (#26516820288)
  • Next Build on main (#26584402568)
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