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

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

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

05 May 2026 04:33PM UTC coverage: 83.947% (-0.02%) from 83.971%
25389104901

push

github

web-flow
feat(unum): partial constexpr support (construction + bitwise) (#820)

Promote the unum Type I (Gustafson 2015) construction and bitwise
operator surface to constexpr / CONSTEXPRESSION, scoped per the issue:

  "Variable-length encoding makes constexpr arithmetic non-trivial;
   scope this issue to construction and bitwise ops first, leave
   arithmetic for follow-up."

Promoted (this PR)

  * default constructor + copy/move (constexpr).
  * Bitwise modifiers and selectors -- clear, setzero, setnan, setbits,
    setbit, at, bits, ubit, fsize, esize, sign, exponent, fraction,
    nbits_used, iszero, isnan, isneg, ispos, isinf, exact -- all
    constexpr.  These are built atop blockbinary primitives that were
    already constexpr, so the promotion is mostly annotation.
  * Special-value free helpers (minpos, maxpos, minneg, maxneg, qnan,
    snan) marked constexpr.
  * Integer / float / double / long double construction marked
    CONSTEXPRESSION.  The path replaces:
      - std::isnan(x)     with x != x
      - std::isinf(x)     with x == numeric_limits<>::infinity()
      - std::signbit(x)   with x < 0  (signed zero already short-
                                       circuited by x == 0.0)
      - std::abs(x)       with sign-flip
      - std::frexp(x, &e) with extractFields + bit decomposition.
        Subnormals are normalized via leading-zero shift on rawFrac.
      - std::ldexp(x, n)  with x * sw::math::constexpr_math::exp2(n)
        (exact at integer arguments via direct IEEE 754 bit
        construction in detail::pow2).

Deferred (follow-up issue)

  * to_double / to_float / operator double()  -- still uses std::ldexp;
    a clean constexpr conversion-out needs a constexpr_math::ldexp
    helper plus a value-domain rewrite of the per-bit accumulation.
  * comparison operators (==, !=, <, <=, >, >=) -- delegate to
    to_double, so they cannot be constexpr until conversion-out is.
  * arithmetic operators (+= -= *= /=, +, -, *, /) -- delegate... (continued)

49 of 63 new or added lines in 1 file covered. (77.78%)

10 existing lines in 1 file now uncovered.

45863 of 54633 relevant lines covered (83.95%)

6478429.38 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
93.97
-3.68% include/sw/universal/number/unum/unum_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 25389104901.1 05 May 2026 05:03PM UTC 648
83.95
GitHub Action Run
Source Files on build 25389104901
  • Tree
  • List 648
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25389104901
  • e216678d on github
  • Prev Build on main (#25386566044)
  • Next Build on main (#25407703044)
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