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

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

Build:
Build:
LAST BUILD BRANCH: feat/issue-1297-takum-log-tables
DEFAULT BRANCH: master
Ran 16 Aug 2026 01:29AM UTC
Jobs 1
Files 618
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

16 Aug 2026 12:55AM UTC coverage: 85.531% (+0.07%) from 85.463%
31918371682

push

github

web-flow
fix(takum_log): evaluate wide-configuration addition in extended precision (#1320)

The remaining half of #1300.  takum_log's multiply and divide became exact
integer work on l in #1312, but addition and subtraction have no logarithmic
shortcut and evaluated through a double.  l carries p fraction bits with p
reaching maxCharBits, so takum_log<64,3> holds 59 against a double's 53 and both
operands were quantized before the addition: 99.22% of 64-bit sums came back
incorrectly rounded.

Configurations with nbits > 54 + rbits now factor the larger operand out and
evaluate  l_result = l_big + 2 log(1 +/- e^(d/2))  in extended precision.  That
form is not merely more accurate than forming e^(la/2) and e^(lb/2) and adding
them -- it is the only one with the format's range, since the naive route
overflows a double for l beyond ~1420 and rbits = 5 reaches 2^32.

The extended precision is a LOCAL two-double type with its own exp and log rather
than dd_cascade.  dd_cascade is accurate enough -- ~103 bits for exp and ~105 for
log against an 80-digit reference -- but an addition built on it costs 27 us
against the double path's 117 ns, and the cost is in its arithmetic, not only its
transcendentals.  The local type brings that to 2.8 us: 20x rather than 229x, at
the same ~106-bit accuracy.

Verified correctly rounded on 133,878 operand pairs against an 80-digit
reference: 0 incorrect, worst case 0.499996 ulp.  The suite checks three layers
and each catches what the others miss -- reverting to the double path fails 7479
add and 7426 sub cases, while an inexact Taylor reciprocal is caught only by the
transcendental layer.

Two measured findings kept in the comments: scaling Taylor terms by 1.0/i rather
than dividing by i costs 33 bits, and std::fma compiles to a library call without
-mfma, which cost 214 ns per double-double multiply until Dekker's split replaced
it at 4.9 ns.  UBSan caught a real defect: a double-double's low limb is routinely
negative and castin... (continued)

159 of 159 new or added lines in 2 files covered. (100.0%)

42578 of 49781 relevant lines covered (85.53%)

7290003.19 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31918371682.1 16 Aug 2026 01:29AM UTC 618
85.53
GitHub Action Run
Source Files on build 31918371682
  • Tree
  • List 618
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31918371682
  • 0b8da423 on github
  • Prev Build on main (#31910503213)
  • Next Build on main (#31918528977)
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