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

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

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

\end{array}
double f(double x) {
        double r1648407 = x;
        double r1648408 = r1648407 * r1648407;
        double r1648409 = 1.0;
        double r1648410 = r1648408 + r1648409;
        double r1648411 = sqrt(r1648410);
        double r1648412 = r1648407 + r1648411;
        double r1648413 = log(r1648412);
        return r1648413;
}

double f(double x) {
        double r1648414 = x;
        double r1648415 = -1.076228701950242;
        bool r1648416 = r1648414 <= r1648415;
        double r1648417 = -0.0625;
        double r1648418 = 5.0;
        double r1648419 = pow(r1648414, r1648418);
        double r1648420 = r1648417 / r1648419;
        double r1648421 = 0.125;
        double r1648422 = r1648414 * r1648414;
        double r1648423 = r1648414 * r1648422;
        double r1648424 = r1648421 / r1648423;
        double r1648425 = -0.5;
        double r1648426 = r1648425 / r1648414;
        double r1648427 = r1648424 + r1648426;
        double r1648428 = r1648420 + r1648427;
        double r1648429 = log(r1648428);
        double r1648430 = 0.9496967329184121;
        bool r1648431 = r1648414 <= r1648430;
        double r1648432 = -0.16666666666666666;
        double r1648433 = r1648423 * r1648432;
        double r1648434 = r1648414 + r1648433;
        double r1648435 = 0.075;
        double r1648436 = r1648419 * r1648435;
        double r1648437 = r1648434 + r1648436;
        double r1648438 = 0.5;
        double r1648439 = r1648438 / r1648414;
        double r1648440 = r1648439 - r1648424;
        double r1648441 = r1648414 + r1648440;
        double r1648442 = r1648441 + r1648414;
        double r1648443 = log(r1648442);
        double r1648444 = r1648431 ? r1648437 : r1648443;
        double r1648445 = r1648416 ? r1648429 : r1648444;
        return r1648445;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original52.6
Target44.6
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.076228701950242

    1. Initial program 61.8

      \[\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}{16}}{{x}^{5}} + \left(\frac{\frac{-1}{2}}{x} + \frac{\frac{1}{8}}{\left(x \cdot x\right) \cdot x}\right)\right)}\]

    if -1.076228701950242 < x < 0.9496967329184121

    1. Initial program 58.5

      \[\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(x + \frac{-1}{6} \cdot \left(\left(x \cdot x\right) \cdot x\right)\right) + \frac{3}{40} \cdot {x}^{5}}\]

    if 0.9496967329184121 < x

    1. Initial program 31.2

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

      \[\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.3

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

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

Reproduce

herbie shell --seed 2019153 
(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)))))