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

stillwater-sc / universal / 36028335838
87%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 24 Sep 2026 05:19PM UTC
Jobs 1
Files 676
Run time 3min
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

24 Sep 2026 04:34PM UTC coverage: 85.977% (-0.007%) from 85.984%
36028335838

push

github

web-flow
fix(posit): significant(posit) did not compile (#1593)

positFraction::get_fixed_point() called blockbinary::set(unsigned, bool), an
overload that does not exist: blockbinary offers set(), set(unsigned) and
setbit(unsigned, bool). A function template's body is not checked until it is
instantiated, get_fixed_point()'s only caller is significant(posit), and
significant(posit) had no callers anywhere in the tree, so neither had ever
been compiled.

The fix is setbit, and the function was correct underneath it: decomposing a
posit and rebuilding it from its own scale and significand returns the value
exactly, over every encoding of five configurations.

significant() and extract_fraction() now default fbits to the posit's own
clamped fbits. They were bare non-deducible parameters, so every caller had to
write significant<nbits, es, bt, fbits>(p) rather than significant(p), which is
presumably why neither had a caller; both files already carried a commented out
`constexpr unsigned fbits = nbits - 3 - es;` recording that intent. The default
is posit<nbits,es,bt>::fbits rather than that expression, because it is
unsigned and wraps: posit<2,0> would ask for a fraction 4294967295 bits wide,
which does not fail to compile but allocates a half-gigabyte stack object and
segfaults.

significant(0) returned a significand of 1. get_fixed_point() makes the hidden
bit explicit, which is right for a normal and wrong for zero, so reconstructing
a zero posit from its own scale and significand produced minpos rather than
zero. The fraction alone cannot tell zero from a value that merely has no
fraction bits, so zero is answered in significant() rather than in
get_fixed_point(), which is doing the right thing for the case it was written
for. NaR is answered with it.

The new suite is the point of the change rather than a formality. This is the
fifth never-instantiated template body found recently -- components(areal) in
#1453, components(efloat) and to_binary(efloat) in #1... (continued)

7 of 7 new or added lines in 2 files covered. (100.0%)

8 existing lines in 1 file now uncovered.

45506 of 52928 relevant lines covered (85.98%)

9412775.16 hits per line

Coverage Regressions

Lines Coverage ∆ File
8
95.41
-0.52% include/sw/universal/number/cfloat/cfloat_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 36028335838.1 24 Sep 2026 05:19PM UTC 676
85.98
GitHub Action Run
Source Files on build 36028335838
  • Tree
  • List 676
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #36028335838
  • 32307caa on github
  • Prev Build on main (#36006265634)
  • Next Build on main (#36050659414)
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