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

stillwater-sc / universal / 22929553272
84%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 11 Mar 2026 12:21AM UTC
Jobs 1
Files 598
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

10 Mar 2026 11:50PM UTC coverage: 84.325% (+0.02%) from 84.307%
22929553272

push

github

web-flow
feat(lns): add fused dot product for lns and dbns via generalized quire (#554)

* feat(lns,dbns): add fused dot product via generalized quire

Implement quire_mul, quire_resolve, fdp, fdp_stride, and fdp_qc for
both lns and dbns number systems. Since these types store values in
log domain, quire_mul bridges to linear domain via double conversion,
decomposes the product with std::frexp, and packs into a blocktriple
for quire accumulation.

The double-precision path is exact for lns/dbns types with <=52
exponent fractional bits. For wider types, a native log-to-linear
conversion using extended precision would be needed.

Test suites cover: quire_mul products, basic fdp, 1024-element vectors,
limb-boundary carry/borrow, catastrophic cancellation, strided fdp,
quire continuation, multiple configs (lns<8,4>, <12,6>, <16,8>, <32,16>;
dbns<8,4>, <9,5>, <10,5>), and accuracy vs double reference.

Resolves #549
Relates to #345

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ci: add dbns to allowed conventional commit scopes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(lns): use BLAS-style strided loop semantics in fdp_qc and fdp_stride

Change strided loops from `for (ix=0; ix<n; ix+=incx)` to
`for (i=0; i<n; ++i) { ix = i*incx; }` so n is the product count,
not an index bound. This matches BLAS conventions where n specifies
how many dot-product terms to compute.

Fix applies to both lns and dbns fdp_qc and fdp_stride functions.
Test stride parameters updated accordingly (n=2 for 2 products at stride 2).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(lns): guard quire_mul double conversion for wide lns types

Replace inline double conversion with if constexpr split: small lns
types (2*max_exp <= 1023) use fast double bridge, wide types compute
exponent sum directly and extract significand via std::pow(2, frac).
Add static_assert to dbns quire_mul confirming double range is safe.
Use std::ldexp for fractional expo... (continued)

128 of 142 new or added lines in 2 files covered. (90.14%)

6 existing lines in 3 files now uncovered.

42687 of 50622 relevant lines covered (84.32%)

6137449.06 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
7
89.23
include/sw/universal/number/dbns/fdp.hpp
7
90.91
include/sw/universal/number/lns/fdp.hpp

Uncovered Existing Lines

Lines Coverage ∆ File
1
34.64
-0.36% include/sw/universal/verification/test_suite_randoms.hpp
2
78.08
0.0% include/sw/universal/number/posito/posito_impl.hpp
3
80.58
-0.67% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 22929553272.1 11 Mar 2026 12:21AM UTC 598
84.32
GitHub Action Run
Source Files on build 22929553272
  • Tree
  • List 598
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #22929553272
  • 7b1f4b10 on github
  • Prev Build on main (#22923252468)
  • Next Build on main (#23000111385)
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