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

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

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

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)

47067 of 55945 relevant lines covered (84.13%)

6022107.95 hits per line

Source Files on job 26726097404.1
  • Tree
  • List 664
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 26726097404
  • 3af51bd7 on github
  • Prev Job for on main (#26712742215.1)
  • Next Job for on main (#26733598966.1)
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