\log \left(N + 1\right) - \log N
\begin{array}{l}
\mathbf{if}\;N \le 5400.000739830978:\\
\;\;\;\;\log \left(\frac{\sqrt{1 + N}}{\sqrt{N}}\right) + \left(\log \left(\sqrt{1 + N}\right) - \log \left(\sqrt{N}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{\frac{1}{3}}{N \cdot N}, \frac{1}{N}, \frac{\frac{-1}{2}}{N \cdot N} + \frac{1}{N}\right)\\
\end{array}double f(double N) {
double r2235076 = N;
double r2235077 = 1.0;
double r2235078 = r2235076 + r2235077;
double r2235079 = log(r2235078);
double r2235080 = log(r2235076);
double r2235081 = r2235079 - r2235080;
return r2235081;
}
double f(double N) {
double r2235082 = N;
double r2235083 = 5400.000739830978;
bool r2235084 = r2235082 <= r2235083;
double r2235085 = 1.0;
double r2235086 = r2235085 + r2235082;
double r2235087 = sqrt(r2235086);
double r2235088 = sqrt(r2235082);
double r2235089 = r2235087 / r2235088;
double r2235090 = log(r2235089);
double r2235091 = log(r2235087);
double r2235092 = log(r2235088);
double r2235093 = r2235091 - r2235092;
double r2235094 = r2235090 + r2235093;
double r2235095 = 0.3333333333333333;
double r2235096 = r2235082 * r2235082;
double r2235097 = r2235095 / r2235096;
double r2235098 = r2235085 / r2235082;
double r2235099 = -0.5;
double r2235100 = r2235099 / r2235096;
double r2235101 = r2235100 + r2235098;
double r2235102 = fma(r2235097, r2235098, r2235101);
double r2235103 = r2235084 ? r2235094 : r2235102;
return r2235103;
}



Bits error versus N
if N < 5400.000739830978Initial program 0.1
Simplified0.1
rmApplied log1p-udef0.1
Applied diff-log0.1
rmApplied *-un-lft-identity0.1
Applied add-sqr-sqrt0.1
Applied times-frac0.1
Applied log-prod0.1
rmApplied add-sqr-sqrt0.1
Applied *-un-lft-identity0.1
Applied sqrt-prod0.1
Applied times-frac0.1
Applied log-prod0.1
Applied associate-+r+0.1
Simplified0.1
if 5400.000739830978 < N Initial program 59.4
Simplified59.4
rmApplied log1p-udef59.4
Applied diff-log59.2
Taylor expanded around inf 0.0
Simplified0.0
Final simplification0.1
herbie shell --seed 2019163 +o rules:numerics
(FPCore (N)
:name "2log (problem 3.3.6)"
(- (log (+ N 1)) (log N)))