Average Error: 53.2 → 0.2
Time: 6.7s
Precision: 64
\[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.9993980925116870972502169934159610420465:\\ \;\;\;\;\log \left(\frac{0.125}{{x}^{3}} - \left(\frac{0.5}{x} - \frac{-0.0625}{{x}^{5}}\right)\right)\\ \mathbf{elif}\;x \le 0.8861387644120477524722900852793827652931:\\ \;\;\;\;\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(\frac{0.5}{x} - \left(\frac{0.125}{{x}^{3}} - 2 \cdot x\right)\right)\\ \end{array}\]
\log \left(x + \sqrt{x \cdot x + 1}\right)
\begin{array}{l}
\mathbf{if}\;x \le -0.9993980925116870972502169934159610420465:\\
\;\;\;\;\log \left(\frac{0.125}{{x}^{3}} - \left(\frac{0.5}{x} - \frac{-0.0625}{{x}^{5}}\right)\right)\\

\mathbf{elif}\;x \le 0.8861387644120477524722900852793827652931:\\
\;\;\;\;\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(\frac{0.5}{x} - \left(\frac{0.125}{{x}^{3}} - 2 \cdot x\right)\right)\\

\end{array}
double f(double x) {
        double r211472 = x;
        double r211473 = r211472 * r211472;
        double r211474 = 1.0;
        double r211475 = r211473 + r211474;
        double r211476 = sqrt(r211475);
        double r211477 = r211472 + r211476;
        double r211478 = log(r211477);
        return r211478;
}

double f(double x) {
        double r211479 = x;
        double r211480 = -0.9993980925116871;
        bool r211481 = r211479 <= r211480;
        double r211482 = 0.125;
        double r211483 = 3.0;
        double r211484 = pow(r211479, r211483);
        double r211485 = r211482 / r211484;
        double r211486 = 0.5;
        double r211487 = r211486 / r211479;
        double r211488 = 0.0625;
        double r211489 = -r211488;
        double r211490 = 5.0;
        double r211491 = pow(r211479, r211490);
        double r211492 = r211489 / r211491;
        double r211493 = r211487 - r211492;
        double r211494 = r211485 - r211493;
        double r211495 = log(r211494);
        double r211496 = 0.8861387644120478;
        bool r211497 = r211479 <= r211496;
        double r211498 = 1.0;
        double r211499 = sqrt(r211498);
        double r211500 = log(r211499);
        double r211501 = r211479 / r211499;
        double r211502 = r211500 + r211501;
        double r211503 = 0.16666666666666666;
        double r211504 = pow(r211499, r211483);
        double r211505 = r211484 / r211504;
        double r211506 = r211503 * r211505;
        double r211507 = r211502 - r211506;
        double r211508 = 2.0;
        double r211509 = r211508 * r211479;
        double r211510 = r211485 - r211509;
        double r211511 = r211487 - r211510;
        double r211512 = log(r211511);
        double r211513 = r211497 ? r211507 : r211512;
        double r211514 = r211481 ? r211495 : r211513;
        return r211514;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original53.2
Target45.7
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 < -0.9993980925116871

    1. Initial program 62.9

      \[\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(\frac{0.125}{{x}^{3}} - \left(\frac{0.5}{x} - \frac{-0.0625}{{x}^{5}}\right)\right)}\]

    if -0.9993980925116871 < x < 0.8861387644120478

    1. Initial program 58.7

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

      \[\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.8861387644120478 < x

    1. Initial program 32.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.9993980925116870972502169934159610420465:\\ \;\;\;\;\log \left(\frac{0.125}{{x}^{3}} - \left(\frac{0.5}{x} - \frac{-0.0625}{{x}^{5}}\right)\right)\\ \mathbf{elif}\;x \le 0.8861387644120477524722900852793827652931:\\ \;\;\;\;\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(\frac{0.5}{x} - \left(\frac{0.125}{{x}^{3}} - 2 \cdot x\right)\right)\\ \end{array}\]

Reproduce

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