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

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

Build:
Build:
LAST BUILD BRANCH: fix/quire_numerics
DEFAULT BRANCH: master
Ran 10 Mar 2026 09:07PM UTC
Jobs 1
Files 596
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

10 Mar 2026 08:39PM UTC coverage: 84.307% (+0.01%) from 84.294%
22923252468

push

github

web-flow
feat(fixpnt): add fused dot product via generalized quire (#553)

* feat(fixpnt): add fused dot product via generalized quire

Implement quire_mul, quire_resolve, fdp, fdp_stride, and fdp_qc for
fixpnt types. Since fixpnt uses blockbinary (not blocktriple) internally,
quire_mul bridges via urmul2() to produce a blocktriple<2*nbits-2, REP>
that the generalized quire can accumulate directly.

Also fix enable_if_fixpnt trait to return the scalar type (matching
enable_if_cfloat pattern) instead of void, enabling fdp/fdp_stride to
return a value.

Test suite covers: quire_mul products, basic fdp, 1024-element vectors,
strided fdp, quire continuation, limb-boundary carry/borrow propagation,
catastrophic cancellation, multiple fixpnt configs, and accuracy vs double.

Relates to #548, #345

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

* fix(fixpnt): address PR #553 CodeRabbit review feedback

1. Fix modulo overflow path in quire_resolve to copy all nbits positions
   (was nbits-1, losing the high payload bit for wide fixpnts)
2. Generalize fdp_qc signature to accept quire<Scalar, capacity, LimbType>
   instead of pinning to quire<Scalar> with default parameters
3. Replace assert() guards with runtime exceptions (std::invalid_argument,
   std::out_of_range) in fdp_qc, fdp_stride, and fdp so preconditions
   are enforced in release builds
4. Fix Kahan test OOB: loop bound i+1 < 1024 prevents x[i+1] access at i=1023

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

* fix(test): Kahan loop iterates full 3-element groups with tail handling

Replace mixed guarded/unguarded loop with clean separation: iterate
only complete 3-element groups (i + 2 < 1024), then handle the 1-2
remaining tail elements explicitly. Eliminates all OOB risk.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

54 of 59 new or added lines in 1 file covered. (91.53%)

3 existing lines in 2 files now uncovered.

42558 of 50480 relevant lines covered (84.31%)

6225493.7 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
5
91.53
include/sw/universal/number/fixpnt/fdp.hpp

Uncovered Existing Lines

Lines Coverage ∆ File
1
81.25
0.45% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
2
78.08
0.0% include/sw/universal/number/posito/posito_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 22923252468.1 10 Mar 2026 09:07PM UTC 596
84.31
GitHub Action Run
Source Files on build 22923252468
  • Tree
  • List 596
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #22923252468
  • 46b06923 on github
  • Prev Build on main (#22916330328)
  • Next Build on main (#22929553272)
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