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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 24 Sep 2026 05:19PM UTC
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

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

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)

45506 of 52928 relevant lines covered (85.98%)

9412775.16 hits per line

Source Files on job 36028335838.1
  • Tree
  • List 676
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 36028335838
  • 32307caa on github
  • Prev Job for on main (#36006265634.1)
  • Next Job for on main (#36050659414.1)
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