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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 13 Aug 2026 02:54PM UTC
Jobs 1
Files 615
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

13 Aug 2026 02:17PM UTC coverage: 85.355% (-0.02%) from 85.37%
31709365949

push

github

web-flow
feat(takum): add the takum_log constant table (#1306)

The constants a logarithmic takum needs are disjoint from the linear takum's:
the two share an encoding but not a value map, so the same mathematical constant
lands on different bits in each.  takum_log had none.

A constant X is tabulated as its logarithmic value l_X = 2 ln X, carried as an
integer pair (c, N) meaning c + N/2^62 rather than as a real literal, and encoded
at the target width through takum_codec::encode_fraction().

The reason is measurable rather than aesthetic.  A double literal caps the
constant at 53 significant bits of l, while takum_log<64,3> has 58 or 59 fraction
bits, so TakumLog(3.14159...) is wrong in the low bits.  Against a 113-bit
reference at nbits = 64:

    sqrt(2)  50 ulp off      ln(2)   24 ulp off
    phi      27 ulp off      pi       6 ulp off

The table reproduces the correctly rounded encoding instead, and the suite counts
25 cases across the tested widths where it beats the double literal, failing
outright if that count is ever zero.

Three entries are EXACT, which no binary floating-point format manages for e: the
value base is sqrt(e), so e, 1/e and sqrt(e) have integer logarithmic values and
encode with no rounding at all, at every width.

29 entries, generated at 80 decimal digits and checked offline against a 113-bit
__float128 reference at 12, 16, 24, 32, 48 and 64 bits -- all 174 combinations
reproduce the correctly rounded encoding, confirming the 62-bit table introduces
no double rounding.

static/tapered/takum_log/math/constants.cpp re-establishes what it can without
quadmath.  VerifyTableValues is the load-bearing one: every other check measures
against the table and is therefore satisfied by a corrupted entry.  Mutation
testing showed exactly that -- perturbing pi's numerator by 200 ulp passed the
entire suite until an independent recomputation of 2 ln X was added.  Its
tolerance follows the platform's long double, tight where that carries 64 bits... (continued)

6 of 6 new or added lines in 1 file covered. (100.0%)

10 existing lines in 1 file now uncovered.

42102 of 49326 relevant lines covered (85.35%)

7216131.86 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 31709365949.1 13 Aug 2026 02:54PM UTC 615
85.35
GitHub Action Run
Source Files on build 31709365949
  • Tree
  • List 615
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31709365949
  • fa66ba40 on github
  • Prev Build on main (#31677190651)
  • Next Build on main (#31735982700)
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