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

stillwater-sc / universal / 35488806619
86%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 20 Sep 2026 04:43AM UTC
Jobs 1
Files 676
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

20 Sep 2026 04:18AM UTC coverage: 85.852% (+0.01%) from 85.841%
35488806619

push

github

web-flow
feat(ereal): constants and math library past the 313-digit ceiling (#1576)

* feat(ereal): constants and math library past the 313-digit ceiling

Part 5 of #1355. Two ceilings held every ereal transcendental at ~313
digits, whatever the limb type and however many limbs it was given.

1. The stored constants were plain double-component expansions, so the
   table ended where double's range does: 19 entries. Each component now
   carries its own binary exponent and is rebuilt as ldexp(FpType(m), e),
   so one table serves every limb type and runs to 2^-4298 (79 entries,
   ~1300 digits, emitted by generate_reference_constants.py
   --ereal-limbs). A limb type takes what it can hold: double limbs stop
   at entry 19 -- exactly the old table, so their constants are
   byte-identical -- while x87 and binary128 take all of it. pi with long
   double limbs goes from 313 digits to 1311.

   The narrow path needs care: a float limb cannot hold a 53-bit
   mantissa, so each term is built as a double and split by the
   conversion, and every limb of the split must be normal. Admitting a
   subnormal component there made pi/2 * 2 stop agreeing with pi after 45
   digits.

2. Every series stopped by converting its term to a double and comparing
   against 10^-(53*maxlimbs/3.322). Any term below ~1e-308 reads as zero
   there, so a series stopped at ~308 digits on a limb type whose range
   goes further. The test is on exponents now (series_converged), and the
   iteration counts follow the limb type.

   That also lifts the double results, which had been stopping short of
   what the type holds: at 19 limbs 4*atan(1) goes from 304 digits to 321
   and exp(1) from 305 to 320; at 8 limbs log(2) from 128 to 145.

The constants and all 15 math-function headers are templates on the limb
type. ereal<24, long double> reaches 482 digits of log(2) and 4*atan(1).

BEHAVIOUR-CHANGE: ereal transcendentals carry the digits their configuration holds, where the series stopped ea... (continued)

184 of 188 new or added lines in 17 files covered. (97.87%)

45159 of 52601 relevant lines covered (85.85%)

9359183.07 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
85.37
0.0% include/sw/universal/number/ereal/math/functions/fractional.hpp
1
91.67
0.0% include/sw/universal/number/ereal/math/functions/next.hpp
1
88.24
0.37% include/sw/universal/number/ereal/math/functions/trigonometry.hpp
1
98.11
0.0% include/sw/universal/number/ereal/math/functions/truncate.hpp
Jobs
ID Job ID Ran Files Coverage
1 35488806619.1 20 Sep 2026 04:43AM UTC 676
85.85
GitHub Action Run
Source Files on build 35488806619
  • Tree
  • List 676
  • Changed 18
  • Source Changed 17
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35488806619
  • 7228118e on github
  • Prev Build on main (#35483994330)
  • Next Build on main (#35496173384)
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