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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 14 Sep 2026 09:38AM UTC
Jobs 1
Files 669
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

14 Sep 2026 08:58AM UTC coverage: 85.808% (+0.01%) from 85.796%
34825475681

push

github

web-flow
fix(internal): Unsigned blockbinary has no sign bit (#1499)

blockbinary<N, B, Unsigned> read its most significant bit as a sign. sign() masked
SIGN_BIT_MASK whatever the number type, ispos() and isneg() follow sign(), and operator<
started from ispos() and isneg(). So every value >= 2^(N-1) sorted below every value
< 2^(N-1): blockbinary<8, uint8_t, Unsigned> 200 < 100 was true, and <=, > and >=,
which build on <, were wrong for half of all pairs (#1479). The same raw bit made >>=
fill with ones and to_sll() sign-extend.

sign() now returns false for Unsigned, so ispos() and isneg() report every Unsigned
value as non-negative, >>= shifts in zeros and to_sll() no longer sign-extends. operator<
compares Unsigned values by magnitude, from the most significant block down; the Signed
path is unchanged. to_native(), urmul2() and urdiv() still call twosComplement(), which
rejects Unsigned at compile time, so they remain unavailable for Unsigned as before.

Audit of Unsigned users, as the issue asked (posit, lns, takum, takum_log, quire, dfloat,
blockdecimal):
- Static: an instrumented copy of the header gave the Unsigned forms of sign(), ispos(),
  isneg(), to_sll() and the four relational operators a [[deprecated]] overload, so gcc
  reports every call site. Every translation unit in the tree that includes a universal
  header, 1,100 of them, was compiled with -fsyntax-only (12 cannot compile on main,
  such as the ones including the extracted blas/blas.hpp). Not one calls any of these on
  an Unsigned blockbinary. The only hits are 701 to_sll() calls on Signed values.
- Runtime: the nine affected test suites (posit, takum, takum_log, lns, quire, dfloat,
  dfixpnt, blockdecimal and blockbinary, 200 tests) were built against a header that
  counts every Unsigned >>= or sign read with the top bit set, every Unsigned comparison
  whose old and new answers differ, and every Unsigned to_sll() that sign-extends. The
  count is zero in every one. So no result any... (continued)

113 of 132 new or added lines in 2 files covered. (85.61%)

43818 of 51065 relevant lines covered (85.81%)

7962702.59 hits per line

Uncovered Changes

Lines Coverage ∆ File
19
83.9
internal/blockbinary/logic/number_types.cpp
Jobs
ID Job ID Ran Files Coverage
1 34825475681.1 14 Sep 2026 09:38AM UTC 669
85.81
GitHub Action Run
Source Files on build 34825475681
  • Tree
  • List 669
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34825475681
  • 53c3ff7a on github
  • Prev Build on main (#34822571383)
  • Next Build on main (#34864593018)
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