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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 05 May 2026 03:30AM 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

05 May 2026 03:08AM UTC coverage: 83.977% (-0.03%) from 84.01%
25355698320

push

github

web-flow
feat(nvblock): full constexpr support across all operators (#813)

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

Promotes nvblock (NVIDIA NVFP4 block format: e4m3 fractional scale +
microfloat element array + external tensor_scale) to fully constexpr
across construction, quantize, dequantize, operator[], and dot product.
Builds on the just-merged constexpr microfloat (PR #811); the e4m3
ScaleType inherits its constexpr conversions from that PR.  Sibling of
mxfloat #812 but simpler -- the fractional e4m3 scale stores the actual
ratio (amax / elem_max), no log2/floor/ldexp helpers needed.  Part of
Epic #723.

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

include/sw/universal/number/nvblock/nvblock_impl.hpp:
  * All public methods marked constexpr: setscalebits, operator[],
    dot, dequantize, quantize.
  * quantize: std::fabs replaced with inline `(x < 0) ? -x : x`.
    No log2/floor/ldexp dispatch is needed because nvblock uses a
    fractional e4m3 scale (raw_scale = amax / elem_max) rather than
    a power-of-two exponent like e8m0.  All other ops (FP arithmetic,
    microfloat to_float / from_float / setbits / minpos) are already
    constexpr after PR #811.
  * compute_elem_max: marked constexpr; constructs via the constexpr
    SpecificValue ctor (microfloat #811) -> to_float (constexpr).
  * Helpers (set_element_zero, get_element_float, set_element_from_float)
    marked constexpr.

static/block/nvblock/api/constexpr.cpp (new):
  * Default construction smoke test (constexpr nvblock<e2m1, 4, e4m3>{}).
  * clear() + setscalebits() + accessors via constexpr lambda.
  * quantize() at constant evaluation:
      - all-zeros input -> block_scale cleared, elements zero
      - small power-of-two input -> non-zero block_scale encoding
        (proves the from_float / amax / elem_max computation works
        end-to-end at constexpr)
  * operator[] with known block_scale + element values; OOB returns 0.
  * dot product with dual tensor scales; verifies tenso... (continued)

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

26 existing lines in 1 file now uncovered.

45844 of 54591 relevant lines covered (83.98%)

6481951.92 hits per line

Coverage Regressions

Lines Coverage ∆ File
26
74.11
-5.83% include/sw/universal/number/microfloat/microfloat_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25355698320.1 05 May 2026 03:30AM UTC 648
83.98
GitHub Action Run
Source Files on build 25355698320
  • 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 #25355698320
  • 3767fa8c on github
  • Prev Build on main (#25353499732)
  • Next Build on main (#25377027626)
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