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

stillwater-sc / universal / 37153423190
87%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 03 Oct 2026 09:41PM UTC
Jobs 1
Files 678
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

03 Oct 2026 08:58PM UTC coverage: 86.069% (+0.02%) from 86.045%
37153423190

push

github

web-flow
fix(takum): exact arithmetic for rbits 4-5 values outside double's range (#1627)

At rbits = 4 and 5 the takum range is 2^+/-65535 and 2^+/-2^32, against
double's 2^+/-1024. Configurations below the #1616 precision gate still
evaluated + - * / and sqrt in a double, so any operand outside double's
range broke: takum<24,4> 2^2000 * 1, 2^2000 + 2^2000 and sqrt(2^2000) gave
NaR, and 2^-2000 * 1 gave 0. takum_log had the same problem in + and -
(big + big NaR, tiny + tiny 0); its * / and sqrt are exact in the log
domain and were fine.

The double path is sound while every operand, and every product, quotient
and sum of two of them, is a normal double; a characteristic within +/-510
guarantees that. Formats inside that bound (every rbits <= 3) still decide
at compile time and are unchanged. Formats beyond it decide per call:
takes_exact_path() / takes_extended_path() send an operand pair to the
exact integer path (takum) or the extended path (takum_log) only when one
of them is outside +/-510. Sending every call down those paths, the first
version of this change, made takum_log<24,4> addition 20x slower and
takum<24,4> division 4-7x slower even for ordinary values. Per call,
in-range values stay close to their old speed (takum<24,4> about 28 -> 36
ns, takum_log<24,4> add 58 -> 62 ns), and only far values pay.

Tests, both of which also had a blind spot: they set NaR and zero results
aside as saturation, which is exactly how the double path failed, so they
passed on the old code.
- wide_arithmetic.cpp: far-range checks against the exact reference, with
  operands clustered two binades wide around 2^+/-2000 and 2^+/-20000
  (takum<24,4>) and 2^+/-3000 (takum<32,5>) so every span fits. NaR or zero
  from finite nonzero operands now fails outright. Old code: 12226 and
  18337 failures for takum<24,4>.
- takum_log addition.cpp: the naive reference pulls out an integer power of
  sqrt(e) before exponentiating -- still adding the values outright, but
  without ove... (continued)

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

45748 of 53153 relevant lines covered (86.07%)

9803800.07 hits per line

Jobs
ID Job ID Ran Files Coverage
1 37153423190.1 03 Oct 2026 09:41PM UTC 678
86.07
GitHub Action Run
Source Files on build 37153423190
  • Tree
  • List 678
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37153423190
  • 16ced6b6 on github
  • Prev Build on main (#37128050643)
  • Next Build on main (#37160643253)
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