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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 03 May 2026 02:41PM 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 02:14PM UTC coverage: 84.184% (+0.01%) from 84.172%
25281498813

push

github

web-flow
feat(td_cascade): full constexpr support across all operators (#798)

Promotes td_cascade (triple-double via floatcascade<3>) to fully
constexpr across construction, arithmetic (+, -, *, /, +=, -=, *=, /=),
comparison (==, !=, <, >, <=, >=), unary negation, and conversion-out
(operator int/long/long long/unsigned*/float/double).  Continues the
Epic #723 cascade trio: dd_cascade (#797), td_cascade (this), and
qd_cascade (next, #743).

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

floatcascade.hpp changes:
  - compress_6to3: marked constexpr (pure fast_two_sum chain).
  - renormalize<3> specialization: marked constexpr; std::isinf
    replaced with sw::universal::is_inf_cx (constexpr from #796).
  - **Added constexpr non-template overloads** for floatcascade<3>:
      add_cascades(floatcascade<3>, floatcascade<3>) -> floatcascade<6>
      multiply_cascades(floatcascade<3>, floatcascade<3>) -> floatcascade<3>
    These pick up before the generic templates via overload resolution
    when called with floatcascade<3> args.  add_cascades sorts 6
    elements by magnitude (bubble sort with ternary abs) then
    accumulates smallest-to-largest with two_sum.  multiply_cascades
    computes all 9 partial products with two_prod, sorts the 18-term
    expansion by magnitude (constexpr-clean fixed-size array sort,
    no std::sort), and accumulates with two_sum chains into a
    3-component result before final renormalize.

td_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 template... (continued)

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

6 existing lines in 2 files now uncovered.

45861 of 54477 relevant lines covered (84.18%)

6490741.65 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
76.28
-0.61% include/sw/universal/number/td_cascade/td_cascade_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
3
80.58
-0.67% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
3
76.28
-0.61% include/sw/universal/number/td_cascade/td_cascade_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25281498813.1 03 May 2026 02:41PM UTC 648
84.18
GitHub Action Run
Source Files on build 25281498813
  • 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 #25281498813
  • 625032bf on github
  • Prev Build on main (#25280163148)
  • Next Build on main (#25283492920)
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