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

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

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

\end{array}
double f(double x) {
        double r91644 = x;
        double r91645 = r91644 * r91644;
        double r91646 = 1.0;
        double r91647 = r91645 + r91646;
        double r91648 = sqrt(r91647);
        double r91649 = r91644 + r91648;
        double r91650 = log(r91649);
        return r91650;
}

double f(double x) {
        double r91651 = x;
        double r91652 = -1.014356783985294;
        bool r91653 = r91651 <= r91652;
        double r91654 = 0.125;
        double r91655 = 3.0;
        double r91656 = pow(r91651, r91655);
        double r91657 = r91654 / r91656;
        double r91658 = 0.0625;
        double r91659 = 5.0;
        double r91660 = pow(r91651, r91659);
        double r91661 = r91658 / r91660;
        double r91662 = r91657 - r91661;
        double r91663 = 0.5;
        double r91664 = r91663 / r91651;
        double r91665 = r91662 - r91664;
        double r91666 = log(r91665);
        double r91667 = 0.8864725828659493;
        bool r91668 = r91651 <= r91667;
        double r91669 = 1.0;
        double r91670 = -0.16666666666666666;
        double r91671 = r91669 / r91670;
        double r91672 = r91656 / r91671;
        double r91673 = r91651 + r91672;
        double r91674 = sqrt(r91669);
        double r91675 = r91673 / r91674;
        double r91676 = log(r91674);
        double r91677 = r91675 + r91676;
        double r91678 = r91651 - r91657;
        double r91679 = r91664 + r91678;
        double r91680 = r91651 + r91679;
        double r91681 = log(r91680);
        double r91682 = r91668 ? r91677 : r91681;
        double r91683 = r91653 ? r91666 : r91682;
        return r91683;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original52.9
Target45.4
Herbie0.3
\[\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.014356783985294

    1. Initial program 62.9

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

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

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

    if -1.014356783985294 < x < 0.8864725828659493

    1. Initial program 58.5

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

      \[\leadsto \color{blue}{\log \left(\sqrt{1}\right) + \left(\frac{-1}{6} \cdot \frac{x \cdot x}{1} + 1\right) \cdot \frac{x}{\sqrt{1}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity0.3

      \[\leadsto \log \left(\sqrt{1}\right) + \color{blue}{\left(1 \cdot \left(\frac{-1}{6} \cdot \frac{x \cdot x}{1} + 1\right)\right)} \cdot \frac{x}{\sqrt{1}}\]
    6. Applied associate-*l*0.3

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

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

    if 0.8864725828659493 < x

    1. Initial program 31.3

      \[\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 + 0.5 \cdot \frac{1}{x}\right) - 0.125 \cdot \frac{1}{{x}^{3}}\right)}\right)\]
    3. Simplified0.3

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

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

Reproduce

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