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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 03 May 2026 04:09PM UTC
Jobs 1
Files 648
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

03 May 2026 03:42PM UTC coverage: 84.179% (-0.005%) from 84.184%
25283492920

push

github

web-flow
feat(qd_cascade): full constexpr support across all operators (#799)

Promotes qd_cascade (quad-double via floatcascade<4>) to fully constexpr
across construction, arithmetic (+, -, *, /, +=, -=, *=, /=), comparison
(==, !=, <, >, <=, >=), unary negation, and conversion-out (operator
int/long/long long/unsigned*/float/double).  Completes the cascade
trio (Epic #723):
  - dd_cascade: #797 (a28f6727)
  - td_cascade: #798 (625032bf)
  - qd_cascade: this PR

Most of the floatcascade<N> EFT primitives were already promoted to
constexpr in #797 (two_sum, fast_two_sum, two_prod, three_sum,
three_sum2, isneg/ispos).  This PR adds the N=4 specializations.

floatcascade.hpp changes:
  - compress_8to4: marked constexpr (pure fast_two_sum chain).
  - renormalize<4> specialization: marked constexpr; std::isinf
    replaced with sw::universal::is_inf_cx (constexpr from #796).
  - **Added constexpr non-template overloads** for floatcascade<4>:
      add_cascades(floatcascade<4>, floatcascade<4>) -> floatcascade<8>
      multiply_cascades(floatcascade<4>, floatcascade<4>) -> floatcascade<4>
    These pick up before the generic templates via overload resolution
    when called with floatcascade<4> args.  add_cascades sorts 8
    elements by magnitude with ternary-abs bubble sort.
    multiply_cascades computes 16 partial products with two_prod, sorts
    the 32-term expansion in a fixed-size array (no std::sort), then
    accumulates with two_sum chains and renormalizes.

qd_cascade_impl.hpp changes:
  - Forward declarations of operator-, operator* promoted to constexpr.
  - Conversion operators int / long / long long / unsigned* / float /
    double: marked constexpr.  Float/double inlined as cascade.to_double().
  - Integer conversions go through new private convert_to_signed_impl /
    convert_to_unsigned_impl templates that collapse the lower three
    limbs (mid_hi + mid_lo + lo) into a single representative double via
    a two_sum chain (sub-ULP error discarded... (continued)

93 of 95 new or added lines in 2 files covered. (97.89%)

11 existing lines in 2 files now uncovered.

45837 of 54452 relevant lines covered (84.18%)

6498464.38 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
76.05
-0.55% include/sw/universal/number/qd_cascade/qd_cascade_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
8
93.48
-0.48% include/sw/universal/number/cfloat/cfloat_impl.hpp
3
76.05
-0.55% include/sw/universal/number/qd_cascade/qd_cascade_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25283492920.1 03 May 2026 04:09PM UTC 648
84.18
GitHub Action Run
Source Files on build 25283492920
  • Tree
  • List 648
  • Changed 4
  • Source Changed 2
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25283492920
  • 8398f3cf on github
  • Prev Build on main (#25281498813)
  • Next Build on main (#25286506672)
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