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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 03 May 2026 06:22PM 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 05:56PM UTC coverage: 84.171% (-0.008%) from 84.179%
25286506672

push

github

web-flow
feat(qd): full constexpr support across all operators (#800)

* feat(qd): full constexpr support across all operators

Promotes qd (classic quad-double precision) to fully constexpr across
construction, arithmetic (+, -, *, /, +=, -=, *=, /=), comparison
(==, !=, <, >, <=, >=), unary negation, and conversion-out (operator
int/long/long long/unsigned*/float/double).

Universal library constexpr coverage now spans 13 number systems:
integer (#720), posit (#718), cfloat (#719), bfloat16 (#725), fixpnt
(#721), lns (#776), areal (#792), dbns (#795), dd (#796), dd_cascade
(#797), td_cascade (#798), qd_cascade (#799), and qd (this PR).

The error_free_ops.hpp EFT primitives used by qd were already promoted
to constexpr in #796 (two_sum, quick_two_sum, two_prod, three_sum,
quick_three_accumulation, renorm with is_constant_evaluated dispatch).

qd_impl.hpp changes:
  - Forward declarations of operator+ - * / promoted to constexpr.
  - Conversion operators int / long / long long / unsigned* / float /
    double / long double: marked constexpr.  Float/double inlined as
    sum of all four limbs.
  - Integer conversions go through new private convert_to_signed_impl /
    convert_to_unsigned_impl templates that collapse the lower three
    limbs (x[1] + x[2] + x[3]) into a single representative double via
    a two_sum chain (sub-ULP error discarded -- cannot affect integer
    truncation), then apply the dd-style limb-separated truncation
    algorithm from #796.  Fixes pre-existing bug in old int64_t-cast
    helpers that ignored x[2] and x[3] entirely (and could trigger UB
    per C++20 [conv.fpint] for unnormalized inputs).
  - Helper templates placed BEFORE operators so clang can resolve the
    constexpr call chain at declaration.
  - Saturation guards before each limb cast (per #797 / #798 lessons).
  - Internal helpers accurate_addition, accurate_multiplication,
    accurate_division, approximate_addition, approximate_multiplication,
    approximate_divisi... (continued)

44 of 52 new or added lines in 1 file covered. (84.62%)

12 existing lines in 2 files now uncovered.

45837 of 54457 relevant lines covered (84.17%)

6500050.81 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
81.55
-0.57% include/sw/universal/number/qd/qd_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
11
31.07
-3.93% include/sw/universal/verification/test_suite_randoms.hpp
1
81.55
-0.57% include/sw/universal/number/qd/qd_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25286506672.1 03 May 2026 06:22PM UTC 648
84.17
GitHub Action Run
Source Files on build 25286506672
  • Tree
  • List 648
  • Changed 4
  • Source Changed 1
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25286506672
  • daf20e6a on github
  • Prev Build on main (#25283492920)
  • Next Build on main (#25288593758)
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