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

stillwater-sc / universal / 23689705135
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 28 Mar 2026 05:15PM UTC
Jobs 1
Files 630
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

28 Mar 2026 04:46PM UTC coverage: 84.358% (-0.03%) from 84.388%
23689705135

push

github

web-flow
feat(ucalc): mixed-precision dot product command (#650)

* feat(ucalc): mixed-precision dot product command (#629)

Add `dot [v1] [v2] [accum=<type>]` command for computing dot products
with explicit control over element type and accumulation type.

Elements are multiplied in the active type, products are accumulated
in the accumulation type (defaults to active type). Result is compared
against a quad-double reference.

Key use case: demonstrating how accumulation precision affects results.
Example: float elements with [1e10, 1, -1e10].[1, 1, 1]:
- float accum:  0 (catastrophic cancellation, rel_error = 1.0)
- dd accum:     1.0 (exact)

All output formats: plain, --json, --csv, --quiet.
21/21 CTests pass on gcc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(dfloat): implement proper operator++/-- for next representable value

dfloat's operator++ was adding 1 (integer increment) instead of
advancing to the next representable value. This caused
numeric_limits::epsilon() to return 1.0 instead of 10^(1-ndigits).

The fix normalizes the significand to exactly ndigits decimal digits
before incrementing, so that +1 on the significand gives the true
successor. For example, dfloat<7>(1.0) stored as (sig=1, exp=0) is
first normalized to (sig=1000000, exp=-6), then incremented to
(sig=1000001, exp=-6) = 1.000001.

Handles boundary cases:
- Significand overflow (10^ndigits): roll to 10^(ndigits-1), exp++
- Significand underflow (below 10^(ndigits-1)): roll to 10^ndigits-1, exp--
- Zero: advance to minpos/minneg
- Exponent overflow/underflow: saturate to inf/zero

epsilon() now returns correct values:
- decimal32 (ndigits=7):  1e-6
- decimal64 (ndigits=16): 1e-15

Also reverts the ucalc numberline workaround (ulp_unreliable) since
the underlying type bug is fixed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(universal): add to_native() API across all number systems

Add a to_native() free function to ... (continued)

28 of 42 new or added lines in 1 file covered. (66.67%)

10 existing lines in 2 files now uncovered.

44590 of 52858 relevant lines covered (84.36%)

6101828.35 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
92.94
-1.87% include/sw/universal/number/dfloat/dfloat_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
5
80.58
-1.12% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
5
50.45
-4.5% include/sw/universal/verification/posit_test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 23689705135.1 28 Mar 2026 05:15PM UTC 630
84.36
GitHub Action Run
Source Files on build 23689705135
  • Tree
  • List 630
  • Changed 23
  • Source Changed 20
  • Coverage Changed 18
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #23689705135
  • f135228c on github
  • Prev Build on main (#23687031958)
  • Next Build on main (#23690843850)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc