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

stillwater-sc / universal / 29649682345
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 18 Jul 2026 04:01PM UTC
Jobs 1
Files 695
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

18 Jul 2026 03:17PM UTC coverage: 84.674% (-0.006%) from 84.68%
29649682345

push

github

web-flow
feat(efloat): 1000-digit pi, e, phi constants as highest-precision basis (#1142)

* feat(efloat): 1000-digit pi, e, phi constants as highest-precision basis

Adds efloat/math/constants/efloat_constants.hpp with efloat_pi<nlimbs>(),
efloat_e<nlimbs>(), efloat_phi<nlimbs>(), seeded from ~1000-digit decimal
literals (generated by tools/generators/efloat_constants_gen.py via mpmath). A
~3300-bit efloat<128> reproduces each to ~1000 decimal digits -- ~3x the
~315-digit ceiling of the multi-component ereal/elreal constants (issue #1139).

Construction bypasses efloat::parse() (capped at the 2040-bit d2b default,
issue #1141) and calls decimal_to_binary::convert<16384> directly, then packs
the mantissa MSB-first into the efloat at min(nlimbs*32, ~3300) bits. The large
BigBits is required because the d2b reduction shifts the digit-integer left by
~(target + 3*ndigits) bits; 16384 covers a 1000-digit literal at a ~3300-bit
target. This does NOT change the shared d2b default budget (dfloat/dd/qd/cfloat/
posit are unaffected). Values are cached per instantiation via a static local.

Refactors trigonometry.hpp to consume the new efloat_pi (dropping its inline
~62-digit literal), addressing the arbitrary-precision-fidelity concern raised
in the #1137 review.

Validation (elastic/efloat/math/constants.cpp) uses INDEPENDENT oracles, not the
literal as its own reference: phi via the identity phi^2-phi-1==0; e vs the
native series sum 1/k!; pi vs Machin's 16*atan(1/5)-4*atan(1/239) (atan of a
small argument is pure Taylor and does not use pi). Level 1 checks ~308 digits
(efloat<32>, fast); LEVEL_4 checks the full ~1000 digits (efloat<128>).
Validated on gcc 13.3.0 and clang 18.1.3; trig regression still passes.

Resolves #1139

* test(efloat): cover make_constant error/zero branches

Exercise make_constant's invalid-input (-> NaN) and zero ("0.0"/"-0.0" -> zero)
paths, which the pi/e/phi literals never hit. Restores the coverage the new
constants header shed and valid... (continued)

35 of 36 new or added lines in 2 files covered. (97.22%)

8 existing lines in 3 files now uncovered.

49435 of 58383 relevant lines covered (84.67%)

6847990.15 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
97.06
include/sw/universal/number/efloat/math/constants/efloat_constants.hpp

Coverage Regressions

Lines Coverage ∆ File
5
50.45
-4.5% include/sw/universal/verification/posit_test_suite_randoms.hpp
2
89.23
-0.55% include/sw/universal/number/posito/posito_impl.hpp
1
80.58
-0.22% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 29649682345.1 18 Jul 2026 04:01PM UTC 695
84.67
GitHub Action Run
Source Files on build 29649682345
  • Tree
  • List 695
  • Changed 4
  • Source Changed 1
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #29649682345
  • 250f5168 on github
  • Prev Build on main (#29643890345)
  • Next Build on main (#29654787094)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc