Average Error: 29.8 → 0.1
Time: 4.0s
Precision: 64
\[\log \left(N + 1\right) - \log N\]
\[\begin{array}{l} \mathbf{if}\;N \le 6381.7936198495444841682910919189453125:\\ \;\;\;\;\left(\log \left(\sqrt{\frac{\sqrt{N + 1}}{1}}\right) + \log \left(\sqrt{\frac{\sqrt{N + 1}}{N}}\right)\right) + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{N}, 1 - \frac{0.5}{N}, \frac{0.3333333333333333148296162562473909929395}{{N}^{3}}\right)\\ \end{array}\]
\log \left(N + 1\right) - \log N
\begin{array}{l}
\mathbf{if}\;N \le 6381.7936198495444841682910919189453125:\\
\;\;\;\;\left(\log \left(\sqrt{\frac{\sqrt{N + 1}}{1}}\right) + \log \left(\sqrt{\frac{\sqrt{N + 1}}{N}}\right)\right) + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{N}, 1 - \frac{0.5}{N}, \frac{0.3333333333333333148296162562473909929395}{{N}^{3}}\right)\\

\end{array}
double f(double N) {
        double r48842 = N;
        double r48843 = 1.0;
        double r48844 = r48842 + r48843;
        double r48845 = log(r48844);
        double r48846 = log(r48842);
        double r48847 = r48845 - r48846;
        return r48847;
}

double f(double N) {
        double r48848 = N;
        double r48849 = 6381.7936198495445;
        bool r48850 = r48848 <= r48849;
        double r48851 = 1.0;
        double r48852 = r48848 + r48851;
        double r48853 = sqrt(r48852);
        double r48854 = 1.0;
        double r48855 = r48853 / r48854;
        double r48856 = sqrt(r48855);
        double r48857 = log(r48856);
        double r48858 = r48853 / r48848;
        double r48859 = sqrt(r48858);
        double r48860 = log(r48859);
        double r48861 = r48857 + r48860;
        double r48862 = 0.5;
        double r48863 = r48852 / r48848;
        double r48864 = log(r48863);
        double r48865 = r48862 * r48864;
        double r48866 = r48861 + r48865;
        double r48867 = r48854 / r48848;
        double r48868 = 0.5;
        double r48869 = r48868 / r48848;
        double r48870 = r48851 - r48869;
        double r48871 = 0.3333333333333333;
        double r48872 = 3.0;
        double r48873 = pow(r48848, r48872);
        double r48874 = r48871 / r48873;
        double r48875 = fma(r48867, r48870, r48874);
        double r48876 = r48850 ? r48866 : r48875;
        return r48876;
}

Error

Bits error versus N

Derivation

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

    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)}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt0.1

      \[\leadsto \log \color{blue}{\left(\sqrt{\frac{N + 1}{N}} \cdot \sqrt{\frac{N + 1}{N}}\right)}\]
    6. Applied log-prod0.1

      \[\leadsto \color{blue}{\log \left(\sqrt{\frac{N + 1}{N}}\right) + \log \left(\sqrt{\frac{N + 1}{N}}\right)}\]
    7. Using strategy rm
    8. Applied pow10.1

      \[\leadsto \log \left(\sqrt{\frac{N + 1}{N}}\right) + \log \left(\sqrt{\color{blue}{{\left(\frac{N + 1}{N}\right)}^{1}}}\right)\]
    9. Applied sqrt-pow10.1

      \[\leadsto \log \left(\sqrt{\frac{N + 1}{N}}\right) + \log \color{blue}{\left({\left(\frac{N + 1}{N}\right)}^{\left(\frac{1}{2}\right)}\right)}\]
    10. Applied log-pow0.1

      \[\leadsto \log \left(\sqrt{\frac{N + 1}{N}}\right) + \color{blue}{\frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)}\]
    11. Using strategy rm
    12. Applied *-un-lft-identity0.1

      \[\leadsto \log \left(\sqrt{\frac{N + 1}{\color{blue}{1 \cdot N}}}\right) + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\]
    13. Applied add-sqr-sqrt0.1

      \[\leadsto \log \left(\sqrt{\frac{\color{blue}{\sqrt{N + 1} \cdot \sqrt{N + 1}}}{1 \cdot N}}\right) + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\]
    14. Applied times-frac0.1

      \[\leadsto \log \left(\sqrt{\color{blue}{\frac{\sqrt{N + 1}}{1} \cdot \frac{\sqrt{N + 1}}{N}}}\right) + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\]
    15. Applied sqrt-prod0.1

      \[\leadsto \log \color{blue}{\left(\sqrt{\frac{\sqrt{N + 1}}{1}} \cdot \sqrt{\frac{\sqrt{N + 1}}{N}}\right)} + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\]
    16. Applied log-prod0.1

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

    if 6381.7936198495445 < N

    1. Initial program 59.4

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

      \[\leadsto \color{blue}{\log \left(\frac{N + 1}{N}\right)}\]
    4. 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}}}\]
    5. Simplified0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{N}, 1 - \frac{0.5}{N}, \frac{0.3333333333333333148296162562473909929395}{{N}^{3}}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;N \le 6381.7936198495444841682910919189453125:\\ \;\;\;\;\left(\log \left(\sqrt{\frac{\sqrt{N + 1}}{1}}\right) + \log \left(\sqrt{\frac{\sqrt{N + 1}}{N}}\right)\right) + \frac{1}{2} \cdot \log \left(\frac{N + 1}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{N}, 1 - \frac{0.5}{N}, \frac{0.3333333333333333148296162562473909929395}{{N}^{3}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020001 +o rules:numerics
(FPCore (N)
  :name "2log (problem 3.3.6)"
  :precision binary64
  (- (log (+ N 1)) (log N)))