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

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

Build:
Build:
LAST BUILD BRANCH: feat/issue-930-elreal-mul-div
DEFAULT BRANCH: master
Ran 31 May 2026 10:57PM UTC
Jobs 1
Files 664
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

31 May 2026 10:18PM UTC coverage: 84.131% (+0.1%) from 84.035%
26726097404

push

github

web-flow
feat(elreal): infinite summation (Phase 5, #929) (#1033)

* feat(elreal): infinite summation (Phase 5, dissertation 4.2.3)

Implement sum() over a series of ZBCL terms (the McCleeary "stream of streams"),
the workhorse for Taylor series and transcendentals in Phase 7.

New headers:
- series.hpp    -- series<FpType>, the lazy co-list of ZBCL<FpType> terms (the
                   issue's colist<ZBCL<FpType>>), mirroring zbcl.hpp's memoised
                   thunk idiom; generators series_from_vector / _from_generator.
- exceptions.hpp -- elreal_exception base + elreal_sum_budget_exceeded.
- sum.hpp       -- sum<FpType>(series, max_depth): collects up to max_depth terms
                   (the budget), guards divergence (term magnitudes must trend to
                   zero), and renormalises the exact total of all term blocks into
                   the unique 0-overlap (DBL_k) stream via priestRenorm.

Design note: the dissertation defines sum as foldr add(). A naive lazy foldr over
the Phase 4 add() builds a deep lazy tower that, when forced, can emit a
value-correct but non-0-overlap stream (add()'s lazy composition does not
preserve the invariant across many nested calls -- see PR notes; worth a Phase 4
follow-up). Because the ZBCL value of a finite block multiset is exactly the
two-sum-exact total of its blocks, we instead renormalise the pooled blocks with
priestRenorm -- the same exact renormalisation add() uses internally -- giving a
result that is bit-exact on the represented terms AND 0-overlap. This makes sum()
eager over the budgeted prefix, which is the intended behaviour for a depth-bounded
summation.

Tests (elastic/elreal/summation/, dyadic-exact oracle, hosts double/float/cfloat<32,8>):
- geometric.cpp   -- sum (1/2)^n, (1/4)^n, (-1/2)^n, (1/3)^n; exact-oracle contract
                     exact_value(sum) == sum_i exact_value(term_i), 0-overlap, closed form.
- alternating.cpp -- Leibniz pi/4 (slow convergence; many compositions).
- ex... (continued)

80 of 85 new or added lines in 3 files covered. (94.12%)

18 existing lines in 2 files now uncovered.

47067 of 55945 relevant lines covered (84.13%)

6022107.95 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
93.48
include/sw/universal/number/elreal/sum.hpp
2
94.59
include/sw/universal/number/elreal/series.hpp

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
8
93.95
-0.47% include/sw/universal/number/cfloat/cfloat_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 26726097404.1 31 May 2026 10:57PM UTC 664
84.13
GitHub Action Run
Source Files on build 26726097404
  • Tree
  • List 664
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26726097404
  • 3af51bd7 on github
  • Prev Build on main (#26712742215)
  • Next Build on main (#26733598966)
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