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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 14 Sep 2026 12:55AM 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

14 Sep 2026 12:16AM UTC coverage: 85.763% (+0.02%) from 85.748%
34792158804

push

github

web-flow
fix(dfloat): follow IEEE 754 for the sign of zero (#1492)

dfloat broke IEEE 754's signed-zero rules in five places:
- A zero product or quotient was +0 whatever the operand signs: -0 * 2, 0 * -2, -0 / 2
  and 0 / -2 all gave +0. It now takes the XOR of the signs.
- operator+= returned its left operand when the right one was zero, so -0 + +0 stayed
  -0. The sum of two zeros is now -0 only when both are -0 (roundTiesToEven), and
  x + 0 is still x.
- An exact zero sum of opposite signs took the left operand's sign, so -2 + 2 was -0.
  It is now +0.
- operator-() skipped zeros, so -(+0) was +0. IEEE negate flips the sign of every
  value.
- operator-= negated its operand the same way, so -0 - -0 = -0 + -0 was -0. It now
  negates zeros too, which gives +0.
Division by infinity, infinity arithmetic, comparisons (-0 == +0) and the sign of an
underflowed result were already right and are unchanged.

New test static/float/dfloat/arithmetic/signed_zero.cpp (dfloat_signed_zero): 28 cases
(the table above, plus sums, differences, division by +-inf, underflow at minpos and
negation) for decimal32/64 in BID and DPD, decimal128, dfloat<4> and dfloat<5> DPD, with
the expected signs from Python's decimal module in the IEEE context. It fails every
configuration on the parent commit and passes on gcc 13.3 and clang with 0 warnings. All
62 dfloat, blockdecimal and dfixpnt test runs pass.

The full-range cross-check against Python's decimal contexts (366,079 parses and
+ - * / results over decimal32/64/128, BID and DPD, dfloat<4> and <5>) had found 1,782
zero results with the wrong sign and no wrong values. It now finds neither. In the dfloat
differential against the parent, only 64 lines change, each a zero whose sign flips.

Closes #1491

BEHAVIOUR-CHANGE: dfloat zero results now carry IEEE 754 signs: -0 * 2 and 0 / -2 are -0 (were +0), -0 + +0, -0 - -0 and -2 + 2 are +0 (were -0), and unary minus flips the sign of a zero

Co-Authored-By: Claude Opus 5 (1M context) ... (continued)

8 of 8 new or added lines in 1 file covered. (100.0%)

1 existing line in 1 file now uncovered.

43648 of 50894 relevant lines covered (85.76%)

7572874.55 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
34.64
-0.36% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 34792158804.1 14 Sep 2026 12:55AM UTC 667
85.76
GitHub Action Run
Source Files on build 34792158804
  • Tree
  • List 667
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34792158804
  • de9bce28 on github
  • Prev Build on main (#34789736838)
  • Next Build on main (#34794035930)
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