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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 29 Apr 2026 02:26AM 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

29 Apr 2026 01:58AM UTC coverage: 84.287% (-0.02%) from 84.306%
25087156079

push

github

web-flow
feat(areal): full constexpr support across all operators (#792)

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

Brings the areal type (faithful floating-point with uncertainty bit)
to fully constexpr across construction, arithmetic, comparison, and
unary negation. Part of the umbrella effort tracked in #723.

Changes in include/sw/universal/number/areal/areal_impl.hpp:

- Unary operator-(): mark constexpr noexcept (line 777). Body was
  already a single bit-mask XOR; just needed the marker.

- operator++ prefix and postfix (lines 960, 997): mark constexpr.
  Bodies were already constexpr-clean integer arithmetic on the block
  storage; just needed the markers.

- operator-- prefix (line 1002): was an unimplemented stub returning
  *this with no decrement. Implement as the symmetric inverse of
  operator++ -- a borrow-on-zero decrement on block storage with the
  modulo wrap-around (000...000 -> 111...111). Promote postfix to
  constexpr in the same patch.

- Free convert(blocktriple, areal, bool) (line 1977): mark constexpr.
  This is the keystone of the arithmetic constexpr promotion -- every
  compound arithmetic operator routes through it. Body uses src.at()
  and target setters that were already constexpr (PR #716 work on
  blockbinary; blocktriple::at was already constexpr).

- Compound arithmetic operators +=, -=, *=, /= and their double
  overloads (lines 783, 826, 829, 837, 840, 890, 893, 953): mark
  constexpr. Each routes through normalize<Op> -> blocktriple::<op> ->
  free convert(); all three building blocks are now constexpr.

- Comparison operators == and != (lines 2140, 2149): mark constexpr.
  Bodies were already constexpr-clean (block-by-block array compare).

- Comparison operator< family (lines 2151-2157): refactor and promote.
  The prior implementation was (lhs - rhs).isneg() which routes
  through arithmetic. Replace with a direct sign-magnitude bit
  comparison that is constexpr-clean, faster, and avoids the
  const... (continued)

15 of 15 new or added lines in 1 file covered. (100.0%)

20 existing lines in 3 files now uncovered.

45709 of 54230 relevant lines covered (84.29%)

6239999.12 hits per line

Coverage Regressions

Lines Coverage ∆ File
11
31.07
-3.93% include/sw/universal/verification/test_suite_randoms.hpp
5
50.45
-4.5% include/sw/universal/verification/posit_test_suite_randoms.hpp
4
80.58
-0.89% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 25087156079.1 29 Apr 2026 02:26AM UTC 648
84.29
GitHub Action Run
Source Files on build 25087156079
  • Tree
  • List 648
  • Changed 6
  • Source Changed 1
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25087156079
  • 311b95ea on github
  • Prev Build on main (#25077144174)
  • Next Build on main (#25264031665)
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