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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 13 Sep 2026 10:31PM UTC
Jobs 1
Files 667
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

13 Sep 2026 09:53PM UTC coverage: 85.732% (+0.04%) from 85.694%
34785139526

push

github

web-flow
fix(dfloat): store the leftover DPD trailing digits (#1486)

A DPD dfloat keeps its leading digit in the combination field and the other
ndigits - 1 in 10-bit declets of three. When ndigits - 1 is not a multiple of 3
(ndigits % 3 != 1), one or two digits are left over, and dpd_trailing_bits()
reserves the top 4 or 7 trailing bits for them. But dpd_encode_trailing_wide() and
dpd_decode_trailing_wide() looped over full declets only, so the leftover digits were
never written or read. dfloat<6,6,DPD>(123456) read back as 100456, and
dfloat<8,6,DPD>(12345678) as 10345678. decimal32, decimal64 and decimal128 (7, 16
and 34 digits) have no leftover digits and are unchanged.

Both functions now write and read the leftover group at the top of the trailing
field: a lone digit in 4 bits (DPD and BCD coincide there), a pair as the 7-bit DPD
group of #1480 (dpd_encode_2digits / dpd_decode_2digits).
dpd_encode_significand() / dpd_decode_significand() in dpd_codec.hpp, which only
the codec test calls, did handle the leftover pair, but packed it as
(d1 << 4) | d0: 8 bits in a 7-bit field, so 200,000 of the 1,000,000 six-digit
significands failed to round-trip. They now use the same helpers.

New test static/float/dfloat/conversion/dpd_trailing.cpp (dfloat_dpd_trailing):
- The same random decimals, with 8s and 9s forced into the leftover positions, must
  unpack to identical sign, exponent and significand in BID and DPD, with BID holding
  exactly the digits written. + - * / on pairs must agree, at every precision from 2
  to 12 digits and at decimal64 (13 to 19 digits and decimal128 at higher levels).
- The significand codec must round-trip exhaustively at 5 and 6 digits (7 and 8 at
  higher levels).

The operand pairs stay within two decades of each other, and their significands end
in a nonzero digit. Wider gaps and short divisors overflow the significand in both
encodings (#1484, filed from this work, as is the parse bug #1485). On main the test
fails at exactly th... (continued)

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

43618 of 50877 relevant lines covered (85.73%)

7542259.56 hits per line

Jobs
ID Job ID Ran Files Coverage
1 34785139526.1 13 Sep 2026 10:31PM UTC 667
85.73
GitHub Action Run
Source Files on build 34785139526
  • Tree
  • List 667
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34785139526
  • 6c10ba1c on github
  • Prev Build on main (#34785019544)
  • Next Build on main (#34789736838)
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