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

stillwater-sc / universal / 35501462888
88%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 20 Sep 2026 09:32AM UTC
Jobs 1
Files 676
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 09:07AM UTC coverage: 85.854% (+0.02%) from 85.835%
35501462888

push

github

web-flow
feat(ereal): float limbs, per-limb-type characterization, and the POWER decision (#1579)

* feat(ereal): float limbs, per-limb-type characterization, and the POWER decision

Closes out Epic #1355: the narrow limb, measured performance across limb types,
the documentation, and the ppc64le question.

log(0) returned the literal -1.0e308. That is not infinity -- isinf(log(0)) was
false -- and it is not representable in a float limb at all, so with float limbs
it overflowed to -inf and with double limbs it did not. The answer depended on
the limb type. It returns -infinity now, on every limb type, as std::log does;
log2, log10 and log1p(-1) inherit it. This is exactly what the narrow limb is
worth having for: it makes a latent assumption fall over where it can be seen.

The nine other special-value constructions built a double NaN and converted it.
They now use numeric_limits<Real>::quiet_NaN(), which is the dedicated path and
does not mention a limb type.

The characterization tool (#1040) swept ereal at double limbs only, and reported
"double" as the FpType for every ereal row. It now sweeps float, double and
long double, skipping the limb-list entries a limb type cannot hold rather than
failing to compile, and reads limbs with dyadic::from_fp -- from_double would
round a long double limb to 53 bits, which is the precision the wide limb exists
to carry. baseline-characterization.txt is regenerated with all three.

The header says plainly that a wider limb is for reach, not speed: binary128 on
aarch64 and riscv64 is libgcc soft-float and is slower than double by a large
factor for about twice the significand, and x87's 80-bit loads are not free
either.

The ppc64le cross build earned its place here. `if constexpr` only leaves its
discarded branch uninstantiated inside a template; in a plain function the
branch is still instantiated, and naming ereal<1, long double>::max_safe_limbs
there completes the class and trips its static_assert. x86-64 never notice... (continued)

4 of 11 new or added lines in 5 files covered. (36.36%)

45178 of 52622 relevant lines covered (85.85%)

9313318.52 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
88.24
0.0% include/sw/universal/number/ereal/math/functions/trigonometry.hpp
2
95.83
0.0% include/sw/universal/number/ereal/math/functions/hyperbolic.hpp
1
97.56
0.0% include/sw/universal/number/ereal/math/functions/pow.hpp
Jobs
ID Job ID Ran Files Coverage
1 35501462888.1 20 Sep 2026 09:32AM UTC 676
85.85
GitHub Action Run
Source Files on build 35501462888
  • Tree
  • List 676
  • Changed 6
  • Source Changed 5
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35501462888
  • d9aeccc3 on github
  • Prev Build on main (#35496173384)
  • Next Build on main (#35523692073)
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