Average Error: 52.7 → 0.2
Time: 1.5m
Precision: 64
\[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.065310111108762:\\ \;\;\;\;\log \left(\frac{\frac{-1}{2}}{x} - \left(\frac{\frac{1}{16}}{{x}^{5}} - \frac{\frac{\frac{\frac{1}{8}}{x}}{x}}{x}\right)\right)\\ \mathbf{elif}\;x \le 0.9649364315232305:\\ \;\;\;\;\frac{3}{40} \cdot {x}^{5} + \left(x + \left(x \cdot \frac{-1}{6}\right) \cdot \left(x \cdot x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(\left(\frac{\frac{1}{2}}{x} - \left(\frac{\frac{1}{8}}{x \cdot \left(x \cdot x\right)} - x\right)\right) + x\right)\\ \end{array}\]
\log \left(x + \sqrt{x \cdot x + 1}\right)
\begin{array}{l}
\mathbf{if}\;x \le -1.065310111108762:\\
\;\;\;\;\log \left(\frac{\frac{-1}{2}}{x} - \left(\frac{\frac{1}{16}}{{x}^{5}} - \frac{\frac{\frac{\frac{1}{8}}{x}}{x}}{x}\right)\right)\\

\mathbf{elif}\;x \le 0.9649364315232305:\\
\;\;\;\;\frac{3}{40} \cdot {x}^{5} + \left(x + \left(x \cdot \frac{-1}{6}\right) \cdot \left(x \cdot x\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\log \left(\left(\frac{\frac{1}{2}}{x} - \left(\frac{\frac{1}{8}}{x \cdot \left(x \cdot x\right)} - x\right)\right) + x\right)\\

\end{array}
double f(double x) {
        double r32678918 = x;
        double r32678919 = r32678918 * r32678918;
        double r32678920 = 1.0;
        double r32678921 = r32678919 + r32678920;
        double r32678922 = sqrt(r32678921);
        double r32678923 = r32678918 + r32678922;
        double r32678924 = log(r32678923);
        return r32678924;
}

double f(double x) {
        double r32678925 = x;
        double r32678926 = -1.065310111108762;
        bool r32678927 = r32678925 <= r32678926;
        double r32678928 = -0.5;
        double r32678929 = r32678928 / r32678925;
        double r32678930 = 0.0625;
        double r32678931 = 5.0;
        double r32678932 = pow(r32678925, r32678931);
        double r32678933 = r32678930 / r32678932;
        double r32678934 = 0.125;
        double r32678935 = r32678934 / r32678925;
        double r32678936 = r32678935 / r32678925;
        double r32678937 = r32678936 / r32678925;
        double r32678938 = r32678933 - r32678937;
        double r32678939 = r32678929 - r32678938;
        double r32678940 = log(r32678939);
        double r32678941 = 0.9649364315232305;
        bool r32678942 = r32678925 <= r32678941;
        double r32678943 = 0.075;
        double r32678944 = r32678943 * r32678932;
        double r32678945 = -0.16666666666666666;
        double r32678946 = r32678925 * r32678945;
        double r32678947 = r32678925 * r32678925;
        double r32678948 = r32678946 * r32678947;
        double r32678949 = r32678925 + r32678948;
        double r32678950 = r32678944 + r32678949;
        double r32678951 = 0.5;
        double r32678952 = r32678951 / r32678925;
        double r32678953 = r32678925 * r32678947;
        double r32678954 = r32678934 / r32678953;
        double r32678955 = r32678954 - r32678925;
        double r32678956 = r32678952 - r32678955;
        double r32678957 = r32678956 + r32678925;
        double r32678958 = log(r32678957);
        double r32678959 = r32678942 ? r32678950 : r32678958;
        double r32678960 = r32678927 ? r32678940 : r32678959;
        return r32678960;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original52.7
Target44.8
Herbie0.2
\[\begin{array}{l} \mathbf{if}\;x \lt 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.065310111108762

    1. Initial program 62.0

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

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

      \[\leadsto \log \color{blue}{\left(\frac{\frac{-1}{2}}{x} - \left(\frac{\frac{1}{16}}{{x}^{5}} - \frac{\frac{\frac{\frac{1}{8}}{x}}{x}}{x}\right)\right)}\]

    if -1.065310111108762 < x < 0.9649364315232305

    1. Initial program 58.4

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

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

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

    if 0.9649364315232305 < x

    1. Initial program 30.2

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.065310111108762:\\ \;\;\;\;\log \left(\frac{\frac{-1}{2}}{x} - \left(\frac{\frac{1}{16}}{{x}^{5}} - \frac{\frac{\frac{\frac{1}{8}}{x}}{x}}{x}\right)\right)\\ \mathbf{elif}\;x \le 0.9649364315232305:\\ \;\;\;\;\frac{3}{40} \cdot {x}^{5} + \left(x + \left(x \cdot \frac{-1}{6}\right) \cdot \left(x \cdot x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(\left(\frac{\frac{1}{2}}{x} - \left(\frac{\frac{1}{8}}{x \cdot \left(x \cdot x\right)} - x\right)\right) + x\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019125 
(FPCore (x)
  :name "Hyperbolic arcsine"

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

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