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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 26 Jun 2026 02:57PM UTC
Jobs 1
Files 684
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

26 Jun 2026 02:13PM UTC coverage: 84.628% (+0.01%) from 84.618%
28243641066

push

github

web-flow
feat(efloat): implement dynamic runtime precision management (#1107)

* feat(efloat): implement dynamic runtime precision management (#1095)

Parameterize the efloat rounding, normalization, and long-arithmetic execution paths
by a dynamic _precision_limbs instance member instead of the static compile-time
nlimbs template parameter. This delivers full dynamic runtime precision control.

Expose efloat_default_precision_bits and get_default_precision() /
set_default_precision() global control helpers under sw::universal.

Expose get_precision() and set_precision() public member functions on efloat instances,
allowing runtime precision resizing and automatic re-rounding.

Initialize _precision_limbs = nlimbs inside the member declaration for constexpr
ctor safety. Override _precision_limbs to the dynamic global default inside clear()
and the constructors wrapped in C++20 !std::is_constant_evaluated() guards, ensuring
full constexpr compile-time compatibility.

Ensure arithmetic operators (+=, *=, /=) escalate the result precision to the maximum
precision of both operands (std::max(_precision_limbs, rhs._precision_limbs)) to prevent
premature bit loss during mixed-precision calculations.

Create precision.cpp inside elastic/efloat/api/ to rigorously cover global default
inheritance, instance scaling, arithmetic escalation, and re-rounding downscaling
boundaries.

Resolves #1095
Relates to Epic #1101, PR #1106

* fix(efloat): resolve CodeRabbit review comments on dynamic precision

1. Fix clear() clobbering custom precision: remove _precision_limbs dynamic re-initialization
   from clear(). clear() should only reset the mathematical state/value, preserving
   the instance's customized runtime precision limit across assignments, matching MPFR.

2. Fix set_precision() zero-limb underflow crash: clamp the computed limb count to a minimum
   of 1 limb in set_precision(), clear(), and the constructors to prevent out-of-bound
   reads in round_limbs().

3. Fix p... (continued)

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

13 existing lines in 3 files now uncovered.

48586 of 57411 relevant lines covered (84.63%)

6760688.71 hits per line

Coverage Regressions

Lines Coverage ∆ File
5
50.45
-4.5% include/sw/universal/verification/posit_test_suite_randoms.hpp
4
84.33
0.73% include/sw/universal/number/efloat/efloat_impl.hpp
4
80.58
-0.89% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 28243641066.1 26 Jun 2026 02:57PM UTC 684
84.63
GitHub Action Run
Source Files on build 28243641066
  • Tree
  • List 684
  • Changed 5
  • Source Changed 1
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28243641066
  • 227f355d on github
  • Prev Build on main (#28213374227)
  • Next Build on main (#28295959931)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc