Skip to content

Commit 0527a0f

Browse files
committed
use log1p where appropriate
to avoid a potential catastrophic cancellation (not observed yet)
1 parent e29d248 commit 0527a0f

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/c/Li3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ double li3(double x)
8787
} else if (x < 1) {
8888
const double l = log(x);
8989
return -li3_neg(1 - 1/x) - li3_pos(1 - x)
90-
+ zeta3 + l*(zeta2 + l*(-0.5*log(1 - x) + 1.0/6*l));
90+
+ zeta3 + l*(zeta2 + l*(-0.5*log1p(-x) + 1.0/6*l));
9191
} else if (x == 1) {
9292
return zeta3;
9393
} else if (x < 2) {

src/cpp/Li3.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ double Li3(double x) noexcept
111111
} else if (x < 1) {
112112
const double l = std::log(x);
113113
return -li3_neg(1 - 1/x) - li3_pos(1 - x)
114-
+ zeta3 + l*(zeta2 + l*(-0.5*std::log(1 - x) + 1.0/6*l));
114+
+ zeta3 + l*(zeta2 + l*(-0.5*std::log1p(-x) + 1.0/6*l));
115115
} else if (x == 1) {
116116
return zeta3;
117117
} else if (x < 2) {

0 commit comments

Comments
 (0)