Average Error: 53.3 → 0.2
Time: 14.3s
Precision: 64
\[\log \left(x + \sqrt{x \cdot x + 1}\right)\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.004740488829904077050514388247393071651:\\ \;\;\;\;\log \left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)\\ \mathbf{elif}\;x \le 0.8999222701664713053304467393900267779827:\\ \;\;\;\;\log \left(\sqrt{1}\right) + \left(\frac{-1}{6} \cdot \frac{x \cdot x}{1} + 1\right) \cdot \frac{x}{\sqrt{1}}\\ \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.004740488829904077050514388247393071651:\\
\;\;\;\;\log \left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)\\

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

\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 r108210 = x;
        double r108211 = r108210 * r108210;
        double r108212 = 1.0;
        double r108213 = r108211 + r108212;
        double r108214 = sqrt(r108213);
        double r108215 = r108210 + r108214;
        double r108216 = log(r108215);
        return r108216;
}

double f(double x) {
        double r108217 = x;
        double r108218 = -1.004740488829904;
        bool r108219 = r108217 <= r108218;
        double r108220 = 0.125;
        double r108221 = 3.0;
        double r108222 = pow(r108217, r108221);
        double r108223 = r108220 / r108222;
        double r108224 = 0.0625;
        double r108225 = 5.0;
        double r108226 = pow(r108217, r108225);
        double r108227 = r108224 / r108226;
        double r108228 = r108223 - r108227;
        double r108229 = 0.5;
        double r108230 = r108229 / r108217;
        double r108231 = r108228 - r108230;
        double r108232 = log(r108231);
        double r108233 = 0.8999222701664713;
        bool r108234 = r108217 <= r108233;
        double r108235 = 1.0;
        double r108236 = sqrt(r108235);
        double r108237 = log(r108236);
        double r108238 = -0.16666666666666666;
        double r108239 = r108217 * r108217;
        double r108240 = r108239 / r108235;
        double r108241 = r108238 * r108240;
        double r108242 = 1.0;
        double r108243 = r108241 + r108242;
        double r108244 = r108217 / r108236;
        double r108245 = r108243 * r108244;
        double r108246 = r108237 + r108245;
        double r108247 = r108217 - r108223;
        double r108248 = r108230 + r108247;
        double r108249 = r108217 + r108248;
        double r108250 = log(r108249);
        double r108251 = r108234 ? r108246 : r108250;
        double r108252 = r108219 ? r108232 : r108251;
        return r108252;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original53.3
Target45.6
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 < -1.004740488829904

    1. Initial program 62.5

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

    if -1.004740488829904 < x < 0.8999222701664713

    1. Initial program 58.8

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

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

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

    if 0.8999222701664713 < x

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.004740488829904077050514388247393071651:\\ \;\;\;\;\log \left(\left(\frac{0.125}{{x}^{3}} - \frac{0.0625}{{x}^{5}}\right) - \frac{0.5}{x}\right)\\ \mathbf{elif}\;x \le 0.8999222701664713053304467393900267779827:\\ \;\;\;\;\log \left(\sqrt{1}\right) + \left(\frac{-1}{6} \cdot \frac{x \cdot x}{1} + 1\right) \cdot \frac{x}{\sqrt{1}}\\ \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 2019325 
(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)))))