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

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

Build:
Build:
LAST BUILD BRANCH: fix/issue-1002-ereal-highprec-constants
DEFAULT BRANCH: master
Ran 21 May 2026 11:33PM UTC
Jobs 1
Files 651
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

21 May 2026 11:12PM UTC coverage: 84.238% (+0.005%) from 84.233%
26258532897

push

github

web-flow
perf(elreal): Phase K.1 -- small-buffer optimisation on _components (#912)

* perf(elreal): Phase K.1 -- small-buffer optimisation on _components

Phase K.1 of follow-up epic #903. First sub-phase of Phase K (#905):
allocator hot-path optimisation. The Phase I baseline identified
per-operator vector allocation as the dominant cost; this PR closes
that part of the gap.

What landed
-----------

- include/sw/universal/number/elreal/lazy_component_buffer.hpp -- new
  small-buffer storage type: 4-double inline array + spill via
  std::vector. 64 bytes total (one cache line). API surface is the
  minimum elreal needs: push_back, operator[], size, clear, reserve.

- include/sw/universal/number/elreal/elreal_impl.hpp -- migrated
  _components from std::vector<double> to lazy_component_buffer.
  The components() accessor now returns const lazy_component_buffer&;
  the single external user in manipulators.hpp uses .size() and
  operator[] which are unchanged.

- docs/algorithmic-details/elreal-performance-baseline.md -- new
  headline-numbers table for the post-K.1 measurements. Phase I
  baseline numbers retained for the before/after comparison.

- docs/algorithmic-details/multi-component-arithmetic.md -- section
  7.1 picker rule updated: multiplication now favors elreal over
  ereal<2> at matched precision (was 1.2x ereal-favored, now 1.9x
  elreal-favored).

Headline numbers (gcc 13.3 on 12th Gen Intel i7-12700K)
--------------------------------------------------------

| Op              | Phase I | Phase K.1 | Speedup |
|-----------------|--------:|----------:|--------:|
| elreal + d1     | 9 Mops  | 12 Mops   | 1.3x    |
| elreal - d1     | 9 Mops  | 14 Mops   | 1.6x    |
| elreal * d1     | 8 Mops  | 19 Mops   | 2.4x    |
| elreal / d0     | 36 Mops | (gops)    | dominated by inlining once heap alloc is gone |
| elreal sqrt d1  | 14 Mops | 30 Mops   | 2.1x    |
| elreal exp  d1  | 14 Mops | 31 Mops   | 2.2x    |
| elreal log  d1  | 14 Mops | 24 Mops   |... (continued)

46945 of 55729 relevant lines covered (84.24%)

5277111.73 hits per line

Jobs
ID Job ID Ran Files Coverage
1 26258532897.1 21 May 2026 11:33PM UTC 651
84.24
GitHub Action Run
Source Files on build 26258532897
  • Tree
  • List 651
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26258532897
  • 9eddae10 on github
  • Prev Build on main (#26256239388)
  • Next Build on main (#26259402148)
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