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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 20 Sep 2026 02:26AM UTC
Jobs 1
Files 675
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

20 Sep 2026 01:43AM UTC coverage: 85.828% (+0.006%) from 85.822%
35482146007

push

github

web-flow
feat(ereal): numeric_limits, traits, streams and helpers on the limb type (#1574)

* feat(ereal): numeric_limits, traits, streams and helpers on the limb type

Part 3 of #1355. Everything around ereal follows its limb type now, so
ereal<n, FpType> is usable, not just constructible:

- numeric_limits<ereal<n, FpType>>: digits = n * digits of the limb, the
  exponent range, epsilon, denorm_min and round_error all from the limb
  type. For double limbs every value is what it was.
- is_ereal_trait, sign/scale/significant, and stream insertion and
  extraction carry the limb type. significant keeps Real as its second
  template argument, so significant<n, float>(v) still compiles.
- type_tag names the limb when it is not the default: ereal<8>,
  ereal<5, float>, ereal<24, long double>.
- math/functions/numerics.hpp -- ldexp, frexp, copysign, scalbn, ilogb,
  logb -- is generic; the core includes it, and to_triple needs frexp.
- check_priest_normal, is_priest_normal and widen in the verification
  support take any limb type, and the overlap bound is half an ulp of that
  type rather than a hardcoded 2^-53.
- ereal converts from and to its own limb type even where
  LONG_DOUBLE_SUPPORT is 0 (MSVC, and a GCC whose long double is double):
  there long double is still a valid limb, and ereal<n, long double>(x)
  would otherwise be ambiguous between the float and double overloads.

Relates to #1355
Resolves #1565

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

* fix(ereal): epsilon and denorm_min follow the type, and the tag test fits every platform

Three of CodeRabbit's four findings on #1574:

- epsilon() returned (eps*eps)/2 of the limb type -- 2^(1-2p), the value
  for TWO limbs, whatever maxLimbs said (2^-105 for every ereal<n>), while
  digits reports maxLimbs * p. It is 2^(1 - digits) now, so the two agree.
- denorm_min() returned the limb type's subnormal. has_denorm is
  denorm_absent, and the C++20 contract then requires min(); el... (continued)

42 of 42 new or added lines in 6 files covered. (100.0%)

2 existing lines in 2 files now uncovered.

45141 of 52595 relevant lines covered (85.83%)

9230304.5 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
93.47
0.0% include/sw/universal/number/cfloat/cfloat_impl.hpp
1
90.48
0.0% include/sw/universal/number/ereal/math/functions/numerics.hpp
Jobs
ID Job ID Ran Files Coverage
1 35482146007.1 20 Sep 2026 02:26AM UTC 675
85.83
GitHub Action Run
Source Files on build 35482146007
  • Tree
  • List 675
  • Changed 8
  • Source Changed 7
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35482146007
  • da1d8408 on github
  • Prev Build on main (#35475770069)
  • Next Build on main (#35483994330)
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