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

stillwater-sc / universal / 35364986399
86%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 18 Sep 2026 04:17PM UTC
Jobs 1
Files 673
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

18 Sep 2026 03:51PM UTC coverage: 85.897% (+0.02%) from 85.882%
35364986399

push

github

web-flow
fix: ereal overflow and large-dividend division, areal to_string (#1555)

Two finite ereal operands whose result lies beyond double's range came back
as NaN in every limb -- DBL_MAX + DBL_MAX was [nan, nan] -- because the
special-value guards from #966 see only the operands: the error-free
transformation rounded its leading term to inf, computed the roundoff as
inf - inf = NaN, and renormalization spread it everywhere (#1553).

The regression for that found a second defect: expansion_quotient scaled the
divisor into [0.5, 1) but never the dividend, so dividend * reciprocal
overflowed for any dividend above about DBL_MAX / 2. DBL_MAX / 2 and even
DBL_MAX / 1e10 were NaN.

A check on a leading-term estimate in ereal's operators was tried first and
dropped: it reported the division NaN as inf, and flagged boundary values
such as (DBL_MAX / 3) * 3 as overflowing when the negative tail brings them
back into range. Only the full expansion knows. So the sum, product and
quotient now manage their own range: near the top they scale their operands
down by an exact power of two, compute, and scale back, returning a single
signed infinity when the leading component overflows on the way back.
Below the thresholds every path is bit-identical to what it was.

to_string(areal) returned an empty string for every value but zero and
infinity, its rendering line commented out. It now renders what operator<<
does, [v] or (v, next), repeated rather than borrowed so the manipulator
layer does not depend on the stream layer (#1554).

Six mutations of the fixed code were each caught by the new tests.

BEHAVIOUR-CHANGE: ereal arithmetic that overflows gives a signed infinity
instead of NaN in every limb; ereal division of a dividend above 2^1000
gives the quotient instead of NaN; to_string(areal) renders the value
instead of an empty string

Resolves #1553
Resolves #1554

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

39 of 39 new or added lines in 3 files covered. (100.0%)

8 existing lines in 1 file now uncovered.

44890 of 52260 relevant lines covered (85.9%)

8767847.4 hits per line

Coverage Regressions

Lines Coverage ∆ File
8
93.37
-0.52% include/sw/universal/number/cfloat/cfloat_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 35364986399.1 18 Sep 2026 04:17PM UTC 673
85.9
GitHub Action Run
Source Files on build 35364986399
  • Tree
  • List 673
  • Changed 5
  • Source Changed 3
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35364986399
  • e9f35bb4 on github
  • Prev Build on main (#35352604718)
  • Next Build on main (#35390754257)
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