Average Error: 53.1 → 0.2
Time: 16.8s
Precision: 64
\[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.002814715336328044159586170280817896128:\\ \;\;\;\;\log \left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)\\ \mathbf{elif}\;x \le 0.9017023301953626113203199565759859979153:\\ \;\;\;\;\left(\log \left(\sqrt{1}\right) + \frac{x}{\sqrt{1}}\right) - \frac{1}{6} \cdot \frac{{x}^{3}}{{\left(\sqrt{1}\right)}^{3}}\\ \mathbf{else}:\\ \;\;\;\;\log \left(x + \left(\left(\frac{0.5}{x} - \frac{0.125}{{x}^{3}}\right) + x\right)\right)\\ \end{array}\]
\log \left(x + \sqrt{x \cdot x + 1}\right)
\begin{array}{l}
\mathbf{if}\;x \le -1.002814715336328044159586170280817896128:\\
\;\;\;\;\log \left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)\\

\mathbf{elif}\;x \le 0.9017023301953626113203199565759859979153:\\
\;\;\;\;\left(\log \left(\sqrt{1}\right) + \frac{x}{\sqrt{1}}\right) - \frac{1}{6} \cdot \frac{{x}^{3}}{{\left(\sqrt{1}\right)}^{3}}\\

\mathbf{else}:\\
\;\;\;\;\log \left(x + \left(\left(\frac{0.5}{x} - \frac{0.125}{{x}^{3}}\right) + x\right)\right)\\

\end{array}
double f(double x) {
        double r289852 = x;
        double r289853 = r289852 * r289852;
        double r289854 = 1.0;
        double r289855 = r289853 + r289854;
        double r289856 = sqrt(r289855);
        double r289857 = r289852 + r289856;
        double r289858 = log(r289857);
        return r289858;
}

double f(double x) {
        double r289859 = x;
        double r289860 = -1.002814715336328;
        bool r289861 = r289859 <= r289860;
        double r289862 = 0.125;
        double r289863 = 3.0;
        double r289864 = pow(r289859, r289863);
        double r289865 = r289862 / r289864;
        double r289866 = 0.0625;
        double r289867 = 5.0;
        double r289868 = pow(r289859, r289867);
        double r289869 = r289866 / r289868;
        double r289870 = r289865 - r289869;
        double r289871 = 0.5;
        double r289872 = r289871 / r289859;
        double r289873 = r289870 - r289872;
        double r289874 = log(r289873);
        double r289875 = 0.9017023301953626;
        bool r289876 = r289859 <= r289875;
        double r289877 = 1.0;
        double r289878 = sqrt(r289877);
        double r289879 = log(r289878);
        double r289880 = r289859 / r289878;
        double r289881 = r289879 + r289880;
        double r289882 = 0.16666666666666666;
        double r289883 = pow(r289878, r289863);
        double r289884 = r289864 / r289883;
        double r289885 = r289882 * r289884;
        double r289886 = r289881 - r289885;
        double r289887 = r289872 - r289865;
        double r289888 = r289887 + r289859;
        double r289889 = r289859 + r289888;
        double r289890 = log(r289889);
        double r289891 = r289876 ? r289886 : r289890;
        double r289892 = r289861 ? r289874 : r289891;
        return r289892;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original53.1
Target45.2
Herbie0.2
\[\begin{array}{l} \mathbf{if}\;x \lt 0.0:\\ \;\;\;\;\log \left(\frac{-1}{x - \sqrt{x \cdot x + 1}}\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(x + \sqrt{x \cdot x + 1}\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if x < -1.002814715336328

    1. Initial program 63.1

      \[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
    2. Taylor expanded around -inf 0.2

      \[\leadsto \log \color{blue}{\left(0.125 \cdot \frac{1}{{x}^{3}} - \left(0.5 \cdot \frac{1}{x} + 0.0625 \cdot \frac{1}{{x}^{5}}\right)\right)}\]
    3. Simplified0.2

      \[\leadsto \log \color{blue}{\left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)}\]

    if -1.002814715336328 < x < 0.9017023301953626

    1. Initial program 58.7

      \[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
    2. Taylor expanded around 0 0.2

      \[\leadsto \color{blue}{\left(\log \left(\sqrt{1}\right) + \frac{x}{\sqrt{1}}\right) - \frac{1}{6} \cdot \frac{{x}^{3}}{{\left(\sqrt{1}\right)}^{3}}}\]

    if 0.9017023301953626 < x

    1. Initial program 32.2

      \[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
    2. Taylor expanded around inf 0.1

      \[\leadsto \log \left(x + \color{blue}{\left(\left(x + 0.5 \cdot \frac{1}{x}\right) - 0.125 \cdot \frac{1}{{x}^{3}}\right)}\right)\]
    3. Simplified0.1

      \[\leadsto \log \left(x + \color{blue}{\left(\left(\frac{0.5}{x} - \frac{0.125}{{x}^{3}}\right) + x\right)}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.002814715336328044159586170280817896128:\\ \;\;\;\;\log \left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)\\ \mathbf{elif}\;x \le 0.9017023301953626113203199565759859979153:\\ \;\;\;\;\left(\log \left(\sqrt{1}\right) + \frac{x}{\sqrt{1}}\right) - \frac{1}{6} \cdot \frac{{x}^{3}}{{\left(\sqrt{1}\right)}^{3}}\\ \mathbf{else}:\\ \;\;\;\;\log \left(x + \left(\left(\frac{0.5}{x} - \frac{0.125}{{x}^{3}}\right) + x\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019323 
(FPCore (x)
  :name "Hyperbolic arcsine"
  :precision binary64

  :herbie-target
  (if (< x 0.0) (log (/ -1 (- x (sqrt (+ (* x x) 1))))) (log (+ x (sqrt (+ (* x x) 1)))))

  (log (+ x (sqrt (+ (* x x) 1)))))