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

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

Build:
Build:
LAST BUILD BRANCH: feat/issue-1061-online-muldiv
DEFAULT BRANCH: master
Ran 17 Mar 2026 03:18AM UTC
Jobs 1
Files 622
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

17 Mar 2026 02:47AM UTC coverage: 84.166% (+0.02%) from 84.15%
23176044597

push

github

web-flow
fix(dd): improve exp/log accuracy for double-double and quad-double (#581)

* fix(dd): improve exp/log accuracy for double-double and quad-double

Fix multiple issues limiting dd/qd math function precision to ~14
digits instead of the expected 32 (dd) and 64 (qd) digits:

1. qd exp(): used qd_log2 (= log10(2) = 0.301) instead of qd_ln2
   (= ln(2) = 0.693) for argument reduction, producing completely
   wrong results. Fix: use qd_ln2.

2. qd exp(): used qd_eps = 2^-104 (dd precision) as convergence
   threshold instead of 2^-209 (qd precision). Fix: use correct
   qd epsilon = 1.22e-63.

3. dd/qd exp(): Taylor loop caps (i < 5 for dd, i < 9 for qd)
   could terminate before full precision convergence. Fix: raise
   to i < 14 (table has 15 entries).

4. dd log(): single Newton step from double initial approximation
   only doubles digits once (16 -> ~30). Fix: add second Newton
   step for full dd precision (~32 digits).

5. dd/qd exp2/exp10/expm1: delegated to native double, losing all
   extra precision. Fix: implement via exp(x * ln2), exp(x * ln10),
   and exp(x) - 1.0 in full dd/qd arithmetic.

Resolves #438

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(qd): add qd-precision regression tests for exp and log functions

Add proper regression tests that verify at full qd precision (~1e-60)
using mathematical identities instead of double-precision oracles:

exp tests:
- exp(0) == 1, exp(1) == qd_e (hardcoded constant)
- exp(log(2^i)) == 2^i (round-trip identity)
- exp2(i) == 2^i (exact via ldexp)
- exp10(i) == 10^i (exact via repeated multiplication)
- expm1(x) + 1 == exp(x) (cross-check identity)

log tests:
- log(exp(i)) == i (round-trip identity)
- log2(2^i) == i (exact powers of 2)
- log10(10^i) == i (exact powers of 10)
- log1p(exp(x)-1) == x (small argument identity)
- log1p(a) == log(1+a) (cross-check for larger arguments)

All tests pass at 1e-60 threshold, confirming full 64-digit precision.

Co-Authored-By: Claude Opus 4.6 ... (continued)

78 of 78 new or added lines in 8 files covered. (100.0%)

38 existing lines in 5 files now uncovered.

43687 of 51906 relevant lines covered (84.17%)

5979572.87 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
68.29
-4.43% include/sw/universal/number/dd_cascade/math/functions/logarithm.hpp
9
71.43
-5.49% include/sw/universal/number/qd_cascade/math/functions/logarithm.hpp
9
72.09
-4.83% include/sw/universal/number/qd/math/functions/logarithm.hpp
9
70.73
-4.27% include/sw/universal/number/td_cascade/math/functions/logarithm.hpp
1
34.64
-0.36% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 23176044597.1 17 Mar 2026 03:18AM UTC 622
84.17
GitHub Action Run
Source Files on build 23176044597
  • Tree
  • List 622
  • Changed 18
  • Source Changed 8
  • Coverage Changed 15
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #23176044597
  • 70f55659 on github
  • Prev Build on main (#23156378881)
  • Next Build on main (#23203718673)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc