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

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

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

\end{array}
double f(double x) {
        double r5009371 = x;
        double r5009372 = r5009371 * r5009371;
        double r5009373 = 1.0;
        double r5009374 = r5009372 + r5009373;
        double r5009375 = sqrt(r5009374);
        double r5009376 = r5009371 + r5009375;
        double r5009377 = log(r5009376);
        return r5009377;
}

double f(double x) {
        double r5009378 = x;
        double r5009379 = -1.0589513033049822;
        bool r5009380 = r5009378 <= r5009379;
        double r5009381 = -0.0625;
        double r5009382 = r5009378 * r5009378;
        double r5009383 = r5009382 * r5009378;
        double r5009384 = r5009382 * r5009383;
        double r5009385 = r5009381 / r5009384;
        double r5009386 = 0.5;
        double r5009387 = r5009386 / r5009378;
        double r5009388 = -0.125;
        double r5009389 = r5009388 / r5009383;
        double r5009390 = r5009387 + r5009389;
        double r5009391 = r5009385 - r5009390;
        double r5009392 = log(r5009391);
        double r5009393 = 0.9524227754971865;
        bool r5009394 = r5009378 <= r5009393;
        double r5009395 = 0.16666666666666666;
        double r5009396 = r5009383 * r5009395;
        double r5009397 = r5009378 - r5009396;
        double r5009398 = 0.075;
        double r5009399 = r5009384 * r5009398;
        double r5009400 = r5009397 + r5009399;
        double r5009401 = r5009390 + r5009378;
        double r5009402 = r5009401 + r5009378;
        double r5009403 = log(r5009402);
        double r5009404 = r5009394 ? r5009400 : r5009403;
        double r5009405 = r5009380 ? r5009392 : r5009404;
        return r5009405;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original52.4
Target44.7
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.0589513033049822

    1. Initial program 62.1

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

    if -1.0589513033049822 < x < 0.9524227754971865

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

    if 0.9524227754971865 < x

    1. Initial program 31.8

      \[\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(x + \left(\frac{\frac{-1}{8}}{\left(x \cdot x\right) \cdot x} + \frac{\frac{1}{2}}{x}\right)\right)}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.2

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

Reproduce

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