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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 14 Aug 2026 04:21AM UTC
Jobs 1
Files 615
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

14 Aug 2026 03:43AM UTC coverage: 85.359% (-0.02%) from 85.378%
31767675386

push

github

web-flow
fix(takum): compute epsilon from the format instead of by subtraction (#1308)

numeric_limits<>::epsilon() was computed as (++one) - one.  That subtraction
runs through a double, so any takum finer than a double collapsed to zero:

    numeric_limits<takum<64,3>>::epsilon()      == 0
    numeric_limits<takum_log<64,3>>::epsilon()  == 0

takum<64,3> carries 59 fraction bits at 1.0, and 1 + 2^-59 is not a double, so
the difference evaluated to exactly zero.  Zero is the most misleading answer
available: it asserts the type represents every real exactly.

Diagnosing all four affected configurations showed two distinct causes.

Where epsilon IS representable, take it from the codec.  The value 1.0 is c == 0,
which lives in the DR with r == 0, so the whole trailing field is fraction and
the step to the successor is 2^-p in c + m:

    linear        the successor is (1 + 2^-p) * 2^0, so epsilon is exactly 2^-p
                  and encodes as characteristic -p with an empty trailing field
    logarithmic   the successor has l == 2^-p, so its value is e^x with
                  x == 2^-(p+1) and epsilon is e^x - 1.  x is at most 2^-12 for
                  any supported width, so the series x + x^2/2 is within x^3/6 --
                  under 2^-73 relative -- and needs no transcendental

Where it is NOT representable, saturate to minpos.  A narrow regime field can
leave the ulp at 1.0 below the smallest representable value: takum<32,2> carries
28 fraction bits at 1.0 but bottoms out at 2^-15, and takum<24,1> at 2^-3.
There is no exact answer there, and minpos is the smallest representable
difference; zero would again assert exactness.

    takum<64,3>       0 -> 1.73472e-18   (2^-59)
    takum_log<64,3>   0 -> 8.67362e-19
    takum<32,2>       0 -> 3.05176e-05   (minpos, ulp unrepresentable)
    takum<24,1>       0 -> 0.125         (minpos, ulp unrepresentable)

Configurations that already worked are unchanged: takum<32,3> stays 7.45058e-09,
takum<16,3> sta... (continued)

42129 of 49355 relevant lines covered (85.36%)

7211741.53 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
2
95.47
-0.58% include/sw/universal/number/takum/takum_impl.hpp
Jobs
ID Job ID Ran Files Coverage
1 31767675386.1 14 Aug 2026 04:21AM UTC 615
85.36
GitHub Action Run
Source Files on build 31767675386
  • Tree
  • List 615
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31767675386
  • 09569b5d on github
  • Prev Build on main (#31735982700)
  • Next Build on main (#31797849430)
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