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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 22 Sep 2026 04:05PM UTC
Jobs 1
Files 676
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

22 Sep 2026 03:19PM UTC coverage: 85.907% (+0.05%) from 85.861%
35746543765

push

github

web-flow
fix(dbns): implement the efloat/ereal manipulators, correct dbns scale, detect the format surface (#1584)

* fix(dbns): implement the efloat/ereal manipulators, correct dbns scale, detect the format surface

Four defects, all of them things that compiled and so went unnoticed.

1. efloat and ereal manipulator placeholders

to_hex, hex_print, pretty_print and color_print each returned the literal
string "tbd" in both headers -- eight functions. to_hex and hex_print carried
commented-out bodies that indexed a nibble(n) and an nbits neither type has.

Both are now rendered the way the library already renders multi-component
values: dd delegates to its limbs' native color_print and joins them, qd labels
each component, dd_cascade tags the type and joins. The two elastic types split
on what their limbs are. An ereal's limbs ARE floating-point values, so it
delegates to the native renderings exactly as dd does. An efloat's limbs are
uint32_t magnitude words with a separate exponent, so there is nothing to
delegate to and it renders the words itself, the way its working to_binary
already did.

2. dbns::scale() reported the wrong scale for almost every encoding

It computed e0 + e1*log2(3). A dbns encodes (-1)^s * base0^e0 * base1^e1 with
base0 = 0.5, so the base-0.5 exponent contributes NEGATIVELY and the scale is
-e0 + e1*log2(3). It answered 2 for 1.5, whose scale is 0, and +1 for 0.5,
whose scale is -1. Sweeping all 256 encodings of dbns<8,3> against
floor(log2(|v|)), 224 of them were wrong.

The type already knew better everywhere else. operator< documents the value as
(-1)^s * 0.5^a * 3^b and orders on M(x) = -a + b*log2of3; convert_ieee754 says
"in our representation we have 0.5^a * 3^b, which would be equivalent to a
being negative" and only accepts a <= 0, storing its magnitude. scale() was the
one place that disagreed.

Two further defects in the same function: zero returned 7 rather than 0, and
the static_cast truncated toward zero where a scale mu... (continued)

94 of 101 new or added lines in 5 files covered. (93.07%)

11 existing lines in 3 files now uncovered.

45424 of 52876 relevant lines covered (85.91%)

9269145.78 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
93.18
36.04% include/sw/universal/number/ereal/manipulators.hpp
2
86.3
-2.16% include/sw/universal/number/dbns/manipulators.hpp
2
96.69
21.69% include/sw/universal/number/efloat/manipulators.hpp

Coverage Regressions

Lines Coverage ∆ File
8
93.54
-0.45% include/sw/universal/number/cfloat/cfloat_impl.hpp
2
86.3
-2.16% include/sw/universal/number/dbns/manipulators.hpp
1
32.04
-0.35% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 35746543765.1 22 Sep 2026 04:05PM UTC 676
85.91
GitHub Action Run
Source Files on build 35746543765
  • Tree
  • List 676
  • Changed 7
  • Source Changed 5
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35746543765
  • 54b97cff on github
  • Prev Build on main (#35542475488)
  • Next Build on main (#35940409374)
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