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

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

Build:
Build:
LAST BUILD BRANCH: refactor/issue-1334-phase1-blocktriple
DEFAULT BRANCH: master
Ran 14 Aug 2026 08:10PM UTC
Jobs 1
Files 616
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 07:31PM UTC coverage: 85.369% (+0.008%) from 85.361%
31833665626

push

github

web-flow
test(takum_log): add the logic and conversion regression suites (#1311)

Two of the three directories from #1297.  Arithmetic is deliberately not here;
see the end.

LOGIC.  Neither takum variant had a logic suite, and it matters more here than
for most formats: takum comparison is not a value comparison.  The encoding is a
two's-complement integer whose order IS the value order (Prop. 4), so the
operators work on bits and never decode.  Nothing was checking that the shortcut
agrees with the values it stands for.  Ordering and trichotomy are now
exhaustive over every pair up to 14 bits.

The NaR semantics were worth pinning and I had them backwards at first.  NaR is
a perfectly normal two's-complement encoding -- 0x8000 at 16 bits -- so I wrote
the suite expecting it to compare like a value.  Both variants deliberately give
it IEEE NaN semantics instead: every relation involving NaR is false, NaR == NaR
included, and trichotomy therefore does not hold for it.  The implementation is
the specification here, and the suite now says so.

CONVERSION.  Round trip through a double, monotonicity of the encoding, and the
saturation DIRECTION -- a value past maxpos must saturate up and one below minpos
must go to zero, and those two must not swap.  That last one is exactly the
failure that made exp() return zero for exp(maxpos) in #1305, so it is checked
rather than assumed.

It also asserts that no integer but 1 is exactly representable: k = sqrt(e)^l
needs l = 2 ln k, transcendental for every integer except 1.  That property is
what makes naive expectations like floor(TL(3)) == 3 fail, and it has now caught
me out twice, so it is written down.

The observation of it is width-limited, which took a failing test to notice.  At
nbits = 64 the trailing field reaches 58 bits, finer than a double's 53, so
double(TL(2)) rounds to exactly 2.0 while the stored M is 111341769010871232
rather than 0.  The double comparison runs only where a double can resolve the
differen... (continued)

42196 of 49428 relevant lines covered (85.37%)

7262067.49 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31833665626.1 14 Aug 2026 08:10PM UTC 616
85.37
GitHub Action Run
Source Files on build 31833665626
  • Tree
  • List 616
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31833665626
  • 992b3f85 on github
  • Prev Build on main (#31816715669)
  • Next Build on main (#31842405092)
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