\[\log \left(N + 1\right) - \log N
\]
↓
\[\begin{array}{l}
\mathbf{if}\;\log \left(N + 1\right) - \log N \leq 2 \cdot 10^{-5}:\\
\;\;\;\;-0.3333333333333333 \cdot {\left(\frac{-1}{N}\right)}^{3} + \left(-0.5 \cdot {\left(\frac{-1}{N}\right)}^{2} + \left(\frac{1}{N} + -0.25 \cdot {\left(\frac{-1}{N}\right)}^{4}\right)\right)\\
\mathbf{elif}\;-\log N \ne 0:\\
\;\;\;\;1 - \left(1 + \mathsf{fma}\left(\mathsf{log1p}\left(N\right), \frac{-1}{\log N}, 1\right) \cdot \log N\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{log1p}\left(N\right) - \log N\\
\end{array}
\]
(FPCore (N) :precision binary64 (- (log (+ N 1.0)) (log N)))
↓
(FPCore (N)
:precision binary64
(if (<= (- (log (+ N 1.0)) (log N)) 2e-5)
(+
(* -0.3333333333333333 (pow (/ -1.0 N) 3.0))
(+
(* -0.5 (pow (/ -1.0 N) 2.0))
(+ (/ 1.0 N) (* -0.25 (pow (/ -1.0 N) 4.0)))))
(if (!= (- (log N)) 0.0)
(- 1.0 (+ 1.0 (* (fma (log1p N) (/ -1.0 (log N)) 1.0) (log N))))
(- (log1p N) (log N)))))double code(double N) {
return log((N + 1.0)) - log(N);
}
↓
double code(double N) {
double tmp;
if ((log((N + 1.0)) - log(N)) <= 2e-5) {
tmp = (-0.3333333333333333 * pow((-1.0 / N), 3.0)) + ((-0.5 * pow((-1.0 / N), 2.0)) + ((1.0 / N) + (-0.25 * pow((-1.0 / N), 4.0))));
} else if (-log(N) != 0.0) {
tmp = 1.0 - (1.0 + (fma(log1p(N), (-1.0 / log(N)), 1.0) * log(N)));
} else {
tmp = log1p(N) - log(N);
}
return tmp;
}
function code(N)
return Float64(log(Float64(N + 1.0)) - log(N))
end
↓
function code(N)
tmp = 0.0
if (Float64(log(Float64(N + 1.0)) - log(N)) <= 2e-5)
tmp = Float64(Float64(-0.3333333333333333 * (Float64(-1.0 / N) ^ 3.0)) + Float64(Float64(-0.5 * (Float64(-1.0 / N) ^ 2.0)) + Float64(Float64(1.0 / N) + Float64(-0.25 * (Float64(-1.0 / N) ^ 4.0)))));
elseif (Float64(-log(N)) != 0.0)
tmp = Float64(1.0 - Float64(1.0 + Float64(fma(log1p(N), Float64(-1.0 / log(N)), 1.0) * log(N))));
else
tmp = Float64(log1p(N) - log(N));
end
return tmp
end
code[N_] := N[(N[Log[N[(N + 1.0), $MachinePrecision]], $MachinePrecision] - N[Log[N], $MachinePrecision]), $MachinePrecision]
↓
code[N_] := If[LessEqual[N[(N[Log[N[(N + 1.0), $MachinePrecision]], $MachinePrecision] - N[Log[N], $MachinePrecision]), $MachinePrecision], 2e-5], N[(N[(-0.3333333333333333 * N[Power[N[(-1.0 / N), $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision] + N[(N[(-0.5 * N[Power[N[(-1.0 / N), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] + N[(N[(1.0 / N), $MachinePrecision] + N[(-0.25 * N[Power[N[(-1.0 / N), $MachinePrecision], 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Unequal[(-N[Log[N], $MachinePrecision]), 0.0], N[(1.0 - N[(1.0 + N[(N[(N[Log[1 + N], $MachinePrecision] * N[(-1.0 / N[Log[N], $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] * N[Log[N], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Log[1 + N], $MachinePrecision] - N[Log[N], $MachinePrecision]), $MachinePrecision]]]
\log \left(N + 1\right) - \log N
↓
\begin{array}{l}
\mathbf{if}\;\log \left(N + 1\right) - \log N \leq 2 \cdot 10^{-5}:\\
\;\;\;\;-0.3333333333333333 \cdot {\left(\frac{-1}{N}\right)}^{3} + \left(-0.5 \cdot {\left(\frac{-1}{N}\right)}^{2} + \left(\frac{1}{N} + -0.25 \cdot {\left(\frac{-1}{N}\right)}^{4}\right)\right)\\
\mathbf{elif}\;-\log N \ne 0:\\
\;\;\;\;1 - \left(1 + \mathsf{fma}\left(\mathsf{log1p}\left(N\right), \frac{-1}{\log N}, 1\right) \cdot \log N\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{log1p}\left(N\right) - \log N\\
\end{array}