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

stillwater-sc / universal / 23694872245
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 28 Mar 2026 10:07PM UTC
Jobs 1
Files 630
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

28 Mar 2026 09:37PM UTC coverage: 84.339% (-0.002%) from 84.341%
23694872245

push

github

web-flow
feat(ucalc): step-by-step arithmetic visualization (#652)

* feat(ucalc): step-by-step arithmetic visualization (#631)

Add `steps <expr>` command that decomposes each arithmetic operation
into its canonical IEEE-754 stages: decompose operands, align exponents
(add/sub), add/multiply/divide significands, normalize, and round.

Phase 1 implementation covers binary IEEE-like types (cfloat, bfloat16,
fp16/32/64, fp8 variants, posit, fixpnt, lns, takum) using the
universal binary floating-point algorithm. Significand binary strings
match the active type's precision bits.

Architecture:
- StepDescription struct and TypeOps::explain callback for future
  type-specific decomposition (decimal, hex, log-domain, dd/qd)
- steps_ieee.hpp: explain_ieee_add/mul/div with IEEEComponents
- Fallback: types without explain callback use IEEE decomposition
- Types can override with custom explain for their native algorithm

Stages shown for addition:
  1. Decompose operands (sign, exponent, significand binary)
  2. Align exponents (shift count and direction)
  3. Add/subtract significands (aligned values and sum)
  4. Normalize (shift direction and count)
  5. Round (to target precision bits, final binary)

Future phases: dfloat (decimal), hfloat (hex), lns (log-domain),
dd/qd (error-free transformations), posit (regime decoding).

Resolves #631

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(ucalc): resolve CodeRabbit review items for steps command

Four fixes:

1. Handle NaN/Infinity in decompose_ieee: returns descriptive
   sig_binary ("NaN", "+Inf", "-Inf") instead of calling frexp
   on special values.

2. Division by zero guard in explain_ieee_div: detects zero
   divisor significand, returns a "Division by zero -> +/-Inf"
   step and exits early instead of producing IEEE Inf silently.

3. CSV header for steps command: "operation,step,label,detail"
   printed before the data rows.

4. Comment on hardcoded -1022 minimum exponent in normal... (continued)

44580 of 52858 relevant lines covered (84.34%)

6104661.59 hits per line

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 23694872245.1 28 Mar 2026 10:07PM UTC 630
84.34
GitHub Action Run
Source Files on build 23694872245
  • Tree
  • List 630
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #23694872245
  • 9014e9c2 on github
  • Prev Build on main (#23690843850)
  • Next Build on main (#23695539103)
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