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

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

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

\end{array}
double f(double x) {
        double r143480 = x;
        double r143481 = r143480 * r143480;
        double r143482 = 1.0;
        double r143483 = r143481 + r143482;
        double r143484 = sqrt(r143483);
        double r143485 = r143480 + r143484;
        double r143486 = log(r143485);
        return r143486;
}

double f(double x) {
        double r143487 = x;
        double r143488 = -1.021540982075884;
        bool r143489 = r143487 <= r143488;
        double r143490 = 0.125;
        double r143491 = 3.0;
        double r143492 = pow(r143487, r143491);
        double r143493 = r143490 / r143492;
        double r143494 = 0.0625;
        double r143495 = 5.0;
        double r143496 = pow(r143487, r143495);
        double r143497 = r143494 / r143496;
        double r143498 = 0.5;
        double r143499 = r143498 / r143487;
        double r143500 = r143497 + r143499;
        double r143501 = r143493 - r143500;
        double r143502 = log(r143501);
        double r143503 = 0.8817659968088067;
        bool r143504 = r143487 <= r143503;
        double r143505 = 1.0;
        double r143506 = sqrt(r143505);
        double r143507 = log(r143506);
        double r143508 = r143487 / r143506;
        double r143509 = r143507 + r143508;
        double r143510 = 0.16666666666666666;
        double r143511 = r143510 / r143505;
        double r143512 = r143492 / r143506;
        double r143513 = r143511 * r143512;
        double r143514 = r143509 - r143513;
        double r143515 = r143487 + r143499;
        double r143516 = r143515 - r143493;
        double r143517 = r143516 + r143487;
        double r143518 = log(r143517);
        double r143519 = r143504 ? r143514 : r143518;
        double r143520 = r143489 ? r143502 : r143519;
        return r143520;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original53.0
Target45.0
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.021540982075884

    1. Initial program 63.1

      \[\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.0625 \cdot \frac{1}{{x}^{5}} + 0.5 \cdot \frac{1}{x}\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 -1.021540982075884 < x < 0.8817659968088067

    1. Initial program 58.6

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

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

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

    if 0.8817659968088067 < x

    1. Initial program 31.4

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

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

Reproduce

herbie shell --seed 2019179 
(FPCore (x)
  :name "Hyperbolic arcsine"

  :herbie-target
  (if (< x 0.0) (log (/ -1.0 (- x (sqrt (+ (* x x) 1.0))))) (log (+ x (sqrt (+ (* x x) 1.0)))))

  (log (+ x (sqrt (+ (* x x) 1.0)))))