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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 23 Jul 2026 11:07PM UTC
Jobs 1
Files 703
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

23 Jul 2026 10:23PM UTC coverage: 84.779% (-0.01%) from 84.793%
30049709164

push

github

web-flow
feat(qd): implement the declared-but-missing fma(a,b,c) (#1190) (#1200)

qd's fma was declared (qd_fwd.hpp) but never defined -- calling it was a link
error. Implement it as a genuine single-rounding fused multiply-add:

  - the product a*b is formed EXACTLY as the expansion of all sixteen a[i]*b[j]
    partials (each split by two_prod -> 32 doubles), c's four limbs are appended,
    and the exact 36-double bag is renormalized to a quad-double in ONE pass
    (Shewchuk grow-then-compress + the qd 5->4 renorm). Because the product is
    never rounded before c is added, the low-order product bits that a plain
    `a*b + c` discards survive into the result -- which is what matters under
    cancellation (c ~ -a*b).
  - IEEE-754 special-value handling done explicitly (nan; inf*0 -> nan;
    inf + (-inf) -> nan; else the signed product-infinity), because qd's own
    operator+ does not always propagate infinities.

Validated against an independent exact dyadic-rational oracle
(static/highprecision/qd/math/fma.cpp, target qd_math_fma):
  - correctly-rounded: full-precision random operands agree with the exact value
    to >= 60 decimal digits (qd carries ~63); worst observed 62 over 200k.
  - fused: under cancellation fma beats the two-rounding a*b+c in 20000/20000
    cases (naive rounds the residual to ~0 digits; fma keeps it).
  - identities fma(a,1,c)==a+c, fma(a,b,0)==a*b, fma(a,0,c)==c, + non-finite.
Green on gcc (CMake) and clang (-Wall -Wpedantic, no warnings).

Resolves #1190. Part of epic #1189.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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

18 existing lines in 2 files now uncovered.

50135 of 59136 relevant lines covered (84.78%)

7017491.34 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
8
93.95
-0.47% include/sw/universal/number/cfloat/cfloat_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 30049709164.1 23 Jul 2026 11:07PM UTC 703
84.78
GitHub Action Run
Source Files on build 30049709164
  • Tree
  • List 703
  • Changed 4
  • Source Changed 1
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30049709164
  • 35148a6e on github
  • Prev Build on main (#30029179195)
  • Next Build on main (#30130967820)
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