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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 03 May 2026 03:34AM 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:06AM UTC coverage: 84.189% (-0.1%) from 84.293%
25268392612

push

github

web-flow
feat(dd): full constexpr support across all operators (#796)

* feat(dd): full constexpr support across arithmetic and comparison operators

Promotes dd (double-double) to fully constexpr across construction,
arithmetic (+, -, *, /, +=, -=, *=, /=), comparison (==, !=, <, >, <=,
>=), unary negation, and conversion-out (operator int/long/long long/
unsigned int/unsigned long/unsigned long long/float/double, plus
long double when LONG_DOUBLE_SUPPORT is enabled). Joins integer (#720),
posit (#718), cfloat (#719), bfloat16 (#725), fixpnt (#721), lns (#776),
areal (#792), and dbns (#795) as a fully constexpr-compliant Universal
type.

The structural blocker for dd was that its compound arithmetic relies on
error-free transformations (two_sum, two_prod, three_sum, split, renorm,
quick_two_sum, two_diff, two_sqr) defined in error_free_ops.hpp, all of
which used `volatile double&` out-parameters and `std::isfinite` checks.
Volatile-qualified glvalue access and pre-C++23 std::isfinite are not
permitted in constant evaluation; both are however load-bearing for
runtime IEEE-754 correctness on aggressive compilers (per the
floatcascade volatile-hardening doc).

error_free_ops.hpp changes:
  - Removed `volatile` from the output parameter signatures (the volatile
    on intermediates is what protects the EFT against compiler reordering;
    the output parameter is just a normal store).
  - Each EFT primitive now dispatches via std::is_constant_evaluated():
    the runtime branch keeps its volatile intermediates and std::isfinite,
    the constexpr branch uses pure double arithmetic with a new
    is_finite_cx helper that reads NaN/Inf via well-defined comparison.
  - Added is_finite_cx() and is_inf_cx() constexpr helpers (analogues of
    std::isfinite/std::isinf for C++20 constant evaluation).
  - split() in its constexpr branch substitutes std::ldexp(x, +/-(BITS+1))
    with a multiplication by 2^(BITS+1) (a constexpr-clean equivalent for
    the SPLIT_THRESHOLD ... (continued)

130 of 214 new or added lines in 2 files covered. (60.75%)

9 existing lines in 2 files now uncovered.

45743 of 54334 relevant lines covered (84.19%)

6420150.06 hits per line

Uncovered Changes

Lines Coverage ∆ File
45
75.53
-22.92% include/sw/universal/numerics/error_free_ops.hpp
39
81.55
-3.64% include/sw/universal/number/dd/dd_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
8
93.48
-0.48% include/sw/universal/number/cfloat/cfloat_impl.hpp
1
90.08
-0.28% include/sw/universal/number/posito/posito_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25268392612.1 03 May 2026 03:34AM UTC 648
84.19
GitHub Action Run
Source Files on build 25268392612
  • Tree
  • List 648
  • Changed 7
  • Source Changed 3
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25268392612
  • c3f97c96 on github
  • Prev Build on main (#25264031665)
  • Next Build on main (#25280163148)
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