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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 23 May 2026 03:10AM UTC
Jobs 1
Files 655
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

23 May 2026 02:42AM UTC coverage: 84.264% (+0.001%) from 84.263%
26321362299

push

github

web-flow
feat(elreal): Phase 2 -- ZBCL<FpType> lazy co-list (#935)

* feat(elreal): Phase 2 -- ZBCL<FpType> lazy co-list of blocks

Phase 2 of the McCleeary LFPERA reimplementation (epic #923). Lands the
lazy stream type that holds an exact-real value as a co-list of
block<FpType> satisfying the 0-overlap invariant.

What ZBCL<FpType> is
- Empty co-list represents the real number 0.
- Non-empty co-list = (head block, tail thunk). The tail thunk is
  std::function<ZBCL()>; forced on first call to tail() or take(n) and
  memoised on the node. Nodes are shared via std::shared_ptr so ZBCL
  values are cheap to copy.
- Sentinel for end-of-stream is an empty thunk. The terminal block's
  tail() returns an empty ZBCL.

API
- cons(head, tail_thunk) / cons(head, materialised_tail) / singleton(b)
- head(), tail(), take(n), is_empty(), operator bool()
- empty<FpType>(), from_native<FpType>(double), to_double_approx(s, n)

0-overlap invariant
- Enforced by an assertion in tail(): when the thunk fires, if the
  resulting stream is non-empty, the head we hold and the new head must
  satisfy zero_overlap(this->head(), tail.head()). Debug-build only
  because evaluating the thunk to check would defeat laziness in
  release.

Cauchy-sequence proof obligation documented inline at the top of
zbcl.hpp. Concrete proofs accompany each operation in later phases.

Files
- include/sw/universal/number/elreal/zbcl.hpp: the lazy stream.
- include/sw/universal/number/elreal/zbcl_helpers.hpp: empty,
  from_native, to_double_approx.
- include/sw/universal/number/elreal/elreal_fwd.hpp: ZBCL fwd-decl.
- include/sw/universal/number/elreal/elreal.hpp: umbrella include.
- elastic/elreal/zbcl/cons_take.cpp: head/tail/take/is_empty contract.
- elastic/elreal/zbcl/laziness.cpp: atomic-counter test verifying take(n)
  forces exactly the thunks needed (take(1) -> 0 forces; take(2) -> 1;
  take(3) -> 2; memoisation prevents re-invocation).
- elastic/elreal/zbcl/from_native.cpp: empty + from_native + r... (continued)

55 of 55 new or added lines in 2 files covered. (100.0%)

8 existing lines in 3 files now uncovered.

47053 of 55840 relevant lines covered (84.26%)

5205427.83 hits per line

Coverage Regressions

Lines Coverage ∆ File
5
50.45
-4.5% include/sw/universal/verification/posit_test_suite_randoms.hpp
2
89.78
-0.55% include/sw/universal/number/posito/posito_impl.hpp
1
81.25
-0.22% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 26321362299.1 23 May 2026 03:10AM UTC 655
84.26
GitHub Action Run
Source Files on build 26321362299
  • Tree
  • List 655
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26321362299
  • 5fe20740 on github
  • Prev Build on main (#26320484701)
  • Next Build on main (#26331745527)
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