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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 27 Apr 2026 04:58PM UTC
Jobs 1
Files 647
Run time 2min
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

27 Apr 2026 04:31PM UTC coverage: 84.308% (-0.03%) from 84.339%
25007204123

push

github

web-flow
feat(lns): Mitchell-style LookupAddSub algorithm (Phase B of #777) (#785)

* feat(lns): Mitchell-style LookupAddSub algorithm (Phase B of #777)

Add the second algorithm in the configurable lns add/sub framework:
a Mitchell-style precomputed-table policy with linear interpolation.

For ML inference accelerators and embedded DSP, this is the SRAM-friendly
hardware default -- one indexed memory read + one mul-add per operation,
no transcendentals at runtime. This was the original Mitchell 1962 LNS
formulation and remains the gold standard for hardware LNS.

LookupAddSub<Lns, IndexBits>
----------------------------
- Compile-time table generation via sw::math::constexpr_math::log2/exp2
  (Epic #763) -- no offline tooling needed, table follows the
  instantiation, a different (Lns, IndexBits) gets its own table.
- IndexBits parameter (log2 of table entries). Default
  min(Lns::rbits + 2, 10) caps at 1024 entries so a 64-bit lns doesn't
  try to allocate millions of entries; users override for higher
  accuracy or smaller SRAM.
- d-range chosen as Lns::rbits + 2: past that, the correction is below
  lns ULP and rounds to 0, so storing those entries gains nothing.
- sb_sub special-cases the |d| < step cell: linear interp on
  log2(1 - 2^d) with unbounded slope at d=0 is unsafe, so the
  cancellation-regime cell falls back to direct cm::log2/cm::exp2
  evaluation. This costs one transcendental pair but only in that
  narrow band, and preserves accuracy where it matters most.
- log_add dispatcher (special values, sign routing) is structurally
  identical to DirectEvaluationAddSub; duplicated for self-containment
  rather than refactored, since the dispatcher is small and the
  algorithm files are meant to be read independently.

Regression extensions (log_add_algorithms.cpp)
----------------------------------------------
- VerifyAddAlgorithmsAgree / VerifySubAlgorithmsAgree generalized to
  take the two policies as template parameters. Phase A's 1-arg form
  ... (continued)

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

21 existing lines in 3 files now uncovered.

45544 of 54021 relevant lines covered (84.31%)

6353101.3 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
8
93.48
-0.48% include/sw/universal/number/cfloat/cfloat_impl.hpp
3
80.58
-0.67% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 25007204123.1 27 Apr 2026 04:58PM UTC 647
84.31
GitHub Action Run
Source Files on build 25007204123
  • Tree
  • List 647
  • Changed 4
  • Source Changed 1
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25007204123
  • ea102517 on github
  • Prev Build on main (#24993226829)
  • Next Build on main (#25017180363)
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