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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 17 Aug 2026 08:25AM UTC
Jobs 1
Files 618
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

17 Aug 2026 07:46AM UTC coverage: 85.434% (-0.05%) from 85.483%
32007305494

push

github

web-flow
fix(qd_cascade): compute the missing quotient digit at every width (#1328)

Cascade division computed exactly N quotient digits for an N-component result.
The correct algorithm needs N+1: the extra digit is discarded, but the
renormalization needs it to round the last component. Classic dd computes three
digits for two components, classic qd five for four; both cascades stopped one
short. Each width now computes the extra digit and closes with the matching
renormalization - three_sum at N=2, renorm4 at N=3, renorm5 at N=4.

That alone reached 0.88 ulps, not qd's 0.14. The rest was a second cause in
code #1322 introduced: multiply_cascade_by_double computed the last partial
product with a PLAIN multiply, discarding an error term that lands exactly at
the last component's ulp. Division inherited it, since every residual step is
that operation. Both widths now take the error term.

Measured against exact dyadic arithmetic, 400 random full-width pairs:

                      before      after     direct
    divide N=2      2.21 ulps      0.47     dd 0.47
    divide N=3      3.16 ulps      0.33     -
    divide N=4      1.84 ulps      0.14     qd 0.14
    a * double      0.79 ulps      0.11     qd 0.11

sqrt improved without being touched - its Newton iteration divides - and is now
the most accurate square root in the library, 0.42 ulps residual against qd's
1.05.

Cost: the cascade divisions were faster than the direct ones only because they
did less work. At the correct digit count they sit at parity (219 nsec/op
against dd's 217, 640 against qd's 588) and sqrt roughly doubles, which makes
sqrt the clear next target.

Also: dd_cascade's fma and its helpers are now constexpr (dd's always were);
inf / 2 is guarded explicitly rather than surviving by accident through
renormalize; and benchmark_hp_equivalence now compares the two families over
full-width operands, which is what actually substantiates the bit-for-bit
claims - dd_cascade reproduces dd exactly ... (continued)

44 of 60 new or added lines in 4 files covered. (73.33%)

15 existing lines in 2 files now uncovered.

42718 of 50001 relevant lines covered (85.43%)

7233639.96 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
76.75
-1.49% include/sw/universal/number/qd_cascade/qd_cascade_impl.hpp
5
81.25
-0.19% include/sw/universal/number/dd_cascade/dd_cascade_impl.hpp
5
77.11
-1.22% include/sw/universal/number/td_cascade/td_cascade_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
11
31.07
-3.93% include/sw/universal/verification/test_suite_randoms.hpp
4
68.75
-25.0% include/sw/universal/utility/error.hpp
Jobs
ID Job ID Ran Files Coverage
1 32007305494.1 17 Aug 2026 08:25AM UTC 618
85.43
GitHub Action Run
Source Files on build 32007305494
  • Tree
  • List 618
  • Changed 6
  • Source Changed 4
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32007305494
  • be3d6594 on github
  • Prev Build on main (#31953293259)
  • Next Build on main (#32032273842)
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