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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-ci-ereal-regression-runtime
DEFAULT BRANCH: master
Ran 16 May 2026 02:03AM 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

16 May 2026 01:35AM UTC coverage: 83.946% (+0.01%) from 83.935%
25949395949

push

github

web-flow
feat(lns): Novel Cotransformation Combination policy (Phase F of #777) (#837)

* feat(lns): Novel Cotransformation Combination policy (Phase F of #777)

Adds ArnoldCotransformationAddSub<Lns, IndexBits, SplitJ> implementing the
"Novel Cotransformation Combination" from

  P. D. Vouzis, S. Collange, M. G. Arnold,
  "A Novel Cotransformation for LNS Subtraction,"
  J. Signal Processing Systems, 58(1), 29-40, 2010.
  DOI: 10.1007/s11265-008-0282-7.

Fills the "fast + faithful-rounding" quadrant of the lns add/sub policy
matrix: the first Universal policy delivering ~1 ULP of DirectEvaluation
across the full d domain (including the cancellation regime near d -> 0
that defeats Lookup / Polynomial / ArnoldBailey) with zero runtime
transcendentals. Sibling to CORDIC (#783, hardware-codesign tier):
Phase F targets the software-accuracy tier.

Algorithm
---------
The dispatcher passes d <= 0. Let z = -d > 0. Bit-split

    z = z_h + z_l,
    z_h = floor(z / delta_h) * delta_h,  z_l in [0, delta_h),
    delta_h = 2^(j - f),                  j = SplitJ, f = rbits.

Precompute two LUTs at compile time:

    F3(z_l) = log2(1 - 2^(-z_l))   for z_l in [0, delta_h)
    F4(z_h) = log2(1 - 2^(-z_h))   for z_h in [delta_h, e_F4]

Runtime evaluation is

    sb_sub(d) = F4(z_h) + sb_add(F3(z_l) - F4(z_h) - z_h)

with idx_h == 0 and z_l == 0 short-circuits. sb_add uses the same
Mitchell-style interpolation table as LookupAddSub.

Defaults
--------
- IndexBits  = min(rbits + 2, 10)  (same as LookupAddSub)
- SplitJ     = min((rbits + 4) / 2, 10)  (paper Table 1 optimum, capped at
              10 to keep F3 within clang's constexpr step budget at high rbits)
- F4 hard-capped at 4096 entries with direct-eval fallback for the tail

Deliverables
------------
- include/sw/universal/number/lns/lns_addsub_algorithms.hpp:
    + ArnoldCotransformationAddSub<Lns, IndexBits, SplitJ>
    + lns_addsub_log_error_bound specialization (target 2 * 2^-rbits)
    + Algorithm 7 doc-block with ... (continued)

39 of 43 new or added lines in 1 file covered. (90.7%)

2 existing lines in 1 file now uncovered.

46029 of 54832 relevant lines covered (83.95%)

6467297.03 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
94.86
-0.72% include/sw/universal/number/lns/lns_addsub_algorithms.hpp

Coverage Regressions

Lines Coverage ∆ File
2
89.8
0.0% include/sw/universal/number/posito/posito_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 25949395949.1 16 May 2026 02:03AM UTC 648
83.95
GitHub Action Run
Source Files on build 25949395949
  • 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 #25949395949
  • 82531092 on github
  • Prev Build on main (#25944190078)
  • Next Build on main (#25960118240)
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