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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 29 Jul 2026 11:32AM UTC
Jobs 1
Files 597
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

29 Jul 2026 10:57AM UTC coverage: 85.229% (+0.01%) from 85.218%
30445687464

push

github

web-flow
feat(interval): Stage 2 EFT-based tight enclosures for native floats (#1247) (#1248)

* feat(interval): Stage 2 EFT-based tight enclosures for native floats (#1247)

Widen an interval endpoint only when an operation is actually inexact, using
error-free transformations (Knuth TwoSum for +/-, Dekker-FMA TwoProduct for *,
FMA residual for the reciprocal in /), recovering 1-ulp-optimal enclosures.
Exactly-representable operations now stay exact (interval<double>(2)+
interval<double>(3) is [5,5], not [nextafter(5,-inf), nextafter(5,+inf)]) while
containment (the Fundamental Theorem, #1234) is preserved.

Safety: the tight path is gated by interval_detail::interval_eft_exact, enabled
for native std::is_floating_point types ONLY. The EFT roundoff term is provably
representable only for an IEEE-754-style format with round-to-nearest AND gradual
underflow. The Universal fixed-size types do NOT qualify and keep the proven
Stage-1 unconditional outward rounding:
  - cfloat without subnormals (the default) flushes the TwoSum error to zero,
    silently breaking containment -- measured 132 breaks / 200k pairs for
    cfloat<16,5>.
  - posit's tapered precision does not guarantee the roundoff is representable.
The trait is safe-by-default: any unrecognized type resolves false and falls
back to Stage-1, so containment can never be silently lost.

Also fixes a sign bug in the EFT reciprocal for negative-denominator intervals:
the widen direction depends on sign(residual)*sign(denominator), not the
residual sign alone.

Tests:
  - addition/subtraction/multiplication/division: exact-operand cases assert
    EXACT equality for EFT types and containment for Stage-1 types, via a
    trait-aware enclosureOK helper.
  - containment.cpp: division added to the fuzz (positive + negative
    denominators, zero-straddling skipped); new Stage-1-fallback containment
    fuzz for cfloat<16,5> and posit<32,2> pinning that they stay sound; the
    tightness bound tightened from 8 ul... (continued)

68 of 69 new or added lines in 2 files covered. (98.55%)

41580 of 48786 relevant lines covered (85.23%)

7167606.73 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
96.34
0.39% include/sw/universal/number/interval/interval_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 30445687464.1 29 Jul 2026 11:32AM UTC 597
85.23
GitHub Action Run
Source Files on build 30445687464
  • 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 #30445687464
  • 1c641743 on github
  • Prev Build on main (#30414562427)
  • Next Build on main (#30459701647)
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