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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-ci-ereal-regression-runtime
DEFAULT BRANCH: master
Ran 03 May 2026 11:31PM 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 11:04PM UTC coverage: 84.122% (-0.03%) from 84.154%
25293401272

push

github

web-flow
feat(hfloat): full constexpr support across all operators (#806)

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

Promotes hfloat (IBM System/360 hexadecimal floating-point) to fully
constexpr across construction, assignment, arithmetic, comparison, and
conversion operators -- direct sibling of dfloat PR #805 / dfixpnt PR
#803 / qd PR #800.  Part of Epic #723.

What changed
------------

include/sw/universal/number/hfloat/hfloat_impl.hpp:
  * Trivial wrappers (clear, setbit, getbit, setbits, setsign, setzero)
    marked constexpr.  hfloat stores its bits in a plain bt[] array
    with no internal building-block dependencies, so these are pure
    integer/array operations with no stdlib calls.
  * Selectors (sign, iszero, isone, ispos, isneg, isinf, isnan, scale)
    marked constexpr.  isinf() and isnan() always return false in HFP.
  * Storage helpers (unpack, pack, normalize_and_pack) marked constexpr.
  * Native-type constructors and operator= for signed/unsigned int and
    float/double routed through constexpr-capable convert_signed,
    convert_unsigned, convert_ieee754.
  * Plain `char` routed through convert_signed via integral promotion
    so hfloat(char(-1)) honors the platform's char signedness (CodeRabbit
    finding from PR #805 applied here too).
  * Arithmetic (+= -= *= /=), increment/decrement (++ --), unary minus,
    SpecificValue construction, all marked constexpr.
  * operator/= divide-by-zero throw fenced under
    !std::is_constant_evaluated() so HFLOAT_THROW_ARITHMETIC_EXCEPTION=1
    callers retain throw behavior at runtime; constant-evaluation falls
    through to setzero() (HFP has no NaN/inf to return).
  * Comparison free functions (== != < <= > >=) for hfloat-hfloat,
    hfloat-double, double-hfloat, all marked constexpr.
  * Free functions abs, fabs marked constexpr.

  * convert_ieee754(double) rewritten to drop std::isnan / std::isinf /
    std::fabs / std::frexp / std::ldexp:
      - NaN detected via x != ... (continued)

104 of 114 new or added lines in 1 file covered. (91.23%)

30 existing lines in 1 file now uncovered.

45806 of 54452 relevant lines covered (84.12%)

6505640.81 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
86.87
-9.17% include/sw/universal/number/hfloat/hfloat_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
30
86.87
-9.17% include/sw/universal/number/hfloat/hfloat_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25293401272.1 03 May 2026 11:31PM UTC 648
84.12
GitHub Action Run
Source Files on build 25293401272
  • 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 #25293401272
  • a0443659 on github
  • Prev Build on main (#25291271294)
  • Next Build on main (#25298158905)
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