Average Error: 29.6 → 0.1
Time: 6.2s
Precision: 64
\[\log \left(N + 1\right) - \log N\]
\[\begin{array}{l} \mathbf{if}\;N \le \frac{5261000080389651}{549755813888}:\\ \;\;\;\;\log \left(\frac{N + 1}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{{N}^{2}} \cdot \left(\frac{\frac{6004799503160661}{18014398509481984}}{N} - \frac{1}{2}\right) + 1 \cdot \frac{1}{N}\\ \end{array}\]
\log \left(N + 1\right) - \log N
\begin{array}{l}
\mathbf{if}\;N \le \frac{5261000080389651}{549755813888}:\\
\;\;\;\;\log \left(\frac{N + 1}{N}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{{N}^{2}} \cdot \left(\frac{\frac{6004799503160661}{18014398509481984}}{N} - \frac{1}{2}\right) + 1 \cdot \frac{1}{N}\\

\end{array}
double f(double N) {
        double r185845 = N;
        double r185846 = 1.0;
        double r185847 = r185845 + r185846;
        double r185848 = log(r185847);
        double r185849 = log(r185845);
        double r185850 = r185848 - r185849;
        return r185850;
}

double f(double N) {
        double r185851 = N;
        double r185852 = 5261000080389651.0;
        double r185853 = 549755813888.0;
        double r185854 = r185852 / r185853;
        bool r185855 = r185851 <= r185854;
        double r185856 = 1.0;
        double r185857 = r185851 + r185856;
        double r185858 = r185857 / r185851;
        double r185859 = log(r185858);
        double r185860 = 1.0;
        double r185861 = 2.0;
        double r185862 = pow(r185851, r185861);
        double r185863 = r185860 / r185862;
        double r185864 = 6004799503160661.0;
        double r185865 = 18014398509481984.0;
        double r185866 = r185864 / r185865;
        double r185867 = r185866 / r185851;
        double r185868 = 2.0;
        double r185869 = r185856 / r185868;
        double r185870 = r185867 - r185869;
        double r185871 = r185863 * r185870;
        double r185872 = r185860 / r185851;
        double r185873 = r185856 * r185872;
        double r185874 = r185871 + r185873;
        double r185875 = r185855 ? r185859 : r185874;
        return r185875;
}

Error

Bits error versus N

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if N < 9569.703398282674

    1. Initial program 0.1

      \[\log \left(N + 1\right) - \log N\]
    2. Using strategy rm
    3. Applied diff-log0.1

      \[\leadsto \color{blue}{\log \left(\frac{N + 1}{N}\right)}\]

    if 9569.703398282674 < N

    1. Initial program 59.4

      \[\log \left(N + 1\right) - \log N\]
    2. Taylor expanded around inf 0.0

      \[\leadsto \color{blue}{\left(0.3333333333333333148296162562473909929395 \cdot \frac{1}{{N}^{3}} + 1 \cdot \frac{1}{N}\right) - 0.5 \cdot \frac{1}{{N}^{2}}}\]
    3. Simplified0.0

      \[\leadsto \color{blue}{\frac{1}{{N}^{2}} \cdot \left(\frac{\frac{6004799503160661}{18014398509481984}}{N} - \frac{1}{2}\right) + 1 \cdot \frac{1}{N}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;N \le \frac{5261000080389651}{549755813888}:\\ \;\;\;\;\log \left(\frac{N + 1}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{{N}^{2}} \cdot \left(\frac{\frac{6004799503160661}{18014398509481984}}{N} - \frac{1}{2}\right) + 1 \cdot \frac{1}{N}\\ \end{array}\]

Reproduce

herbie shell --seed 350497007 
(FPCore (N)
  :name "2log (problem 3.3.6)"
  :precision binary64
  (- (log (+ N 1)) (log N)))