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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 29 Jul 2026 06:33PM UTC
Jobs 1
Files 597
Run time 2min
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

29 Jul 2026 05:58PM UTC coverage: 85.24% (+0.008%) from 85.232%
30477756954

push

github

web-flow
feat(interval): Stage-2 EFT tightness for cfloat with subnormals (#1255) (#1256)

* feat(interval): Stage-2 EFT tightness for cfloat with subnormals (#1255)

cfloat with hasSubnormals=true is genuine IEEE-754 (RNE + gradual underflow), so
its TwoSum/TwoProduct are exact in the safe band exactly like native floats (the
only failures are the universal over/underflow boundary caveats). Enable the
Stage-2 tight enclosures for it, gated on the subnormal flag AND 2*digits <= 53.

interval_eft_exact<cfloat<nbits,es,bt,true,sup,sat>> is true iff 2*(nbits-es)<=53.
The gate guarantees the exact product of two significands fits in a double, so
prod_enclose verifies the rounding direction by exact double promotion instead of
the native frexp/ldexp path -- cfloat's own frexp/ldexp misbehave at narrow
configs (frexp(cfloat<8,2>) does not normalize; ldexp overflow returns garbage).

Three robustness fixes, each needed for soundness across cfloat configs:
- prod_enclose branches at the top on is_floating_point: native keeps the frexp
  normalized-domain path (#1252); cfloat uses double-verified direction.
- operator/= reciprocal EFT residual is gated on native floats too; cfloat uses
  the Stage-1 (unconditional outward) reciprocal, then the tight *= recovers most
  tightness.
- round_down/round_up clamp NaN to -/+inf. cfloat's nextafter(maxneg,-inf) returns
  NaN at the boundary; without the clamp an overflowing corner product yielded a
  NaN that std::min silently swallowed, producing a too-tight (unsound) lower
  bound. -/+inf is the correct directed value there (also improves Stage-1).

Verified: 0 containment breaks over 68M+ samples (+ - * / sqr sqrt) across
cfloat<8,2>+sub, <10,4>+sub, <16,5>+sub, <32,8>+sub, <16,5>+sub+inf -- wide
(bit-for-bit IEEE) and pathologically narrow alike. cfloat WITHOUT subnormals
stays Stage-1. Regression added to containment.cpp (EFT cfloat<16,5>+sub and the
narrow cfloat<8,2>+sub); VerifyContainmentFuzzT now scales its operand ra... (continued)

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

41605 of 48809 relevant lines covered (85.24%)

7173558.36 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30477756954.1 29 Jul 2026 06:33PM UTC 597
85.24
GitHub Action Run
Source Files on build 30477756954
  • Tree
  • List 597
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30477756954
  • 37a4dc5b on github
  • Prev Build on main (#30459701647)
  • Next Build on main (#30481302997)
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