Average Error: 31.2 → 0.2
Time: 22.6s
Precision: 64
\[\log \left(x + \sqrt{x \cdot x - 1}\right)\]
\[\log \left(\mathsf{fma}\left(2, x, \left(\frac{\frac{-1}{2}}{x}\right)\right) - \frac{\frac{\frac{1}{8}}{x}}{x \cdot x}\right)\]
\log \left(x + \sqrt{x \cdot x - 1}\right)
\log \left(\mathsf{fma}\left(2, x, \left(\frac{\frac{-1}{2}}{x}\right)\right) - \frac{\frac{\frac{1}{8}}{x}}{x \cdot x}\right)
double f(double x) {
        double r1920572 = x;
        double r1920573 = r1920572 * r1920572;
        double r1920574 = 1.0;
        double r1920575 = r1920573 - r1920574;
        double r1920576 = sqrt(r1920575);
        double r1920577 = r1920572 + r1920576;
        double r1920578 = log(r1920577);
        return r1920578;
}

double f(double x) {
        double r1920579 = 2.0;
        double r1920580 = x;
        double r1920581 = -0.5;
        double r1920582 = r1920581 / r1920580;
        double r1920583 = fma(r1920579, r1920580, r1920582);
        double r1920584 = 0.125;
        double r1920585 = r1920584 / r1920580;
        double r1920586 = r1920580 * r1920580;
        double r1920587 = r1920585 / r1920586;
        double r1920588 = r1920583 - r1920587;
        double r1920589 = log(r1920588);
        return r1920589;
}

Error

Bits error versus x

Derivation

  1. Initial program 31.2

    \[\log \left(x + \sqrt{x \cdot x - 1}\right)\]
  2. Simplified31.2

    \[\leadsto \color{blue}{\log \left(x + \sqrt{\mathsf{fma}\left(x, x, -1\right)}\right)}\]
  3. Taylor expanded around inf 0.2

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

    \[\leadsto \log \color{blue}{\left(\mathsf{fma}\left(2, x, \left(\frac{\frac{-1}{2}}{x}\right)\right) - \frac{\frac{\frac{1}{8}}{x}}{x \cdot x}\right)}\]
  5. Final simplification0.2

    \[\leadsto \log \left(\mathsf{fma}\left(2, x, \left(\frac{\frac{-1}{2}}{x}\right)\right) - \frac{\frac{\frac{1}{8}}{x}}{x \cdot x}\right)\]

Reproduce

herbie shell --seed 2019129 +o rules:numerics
(FPCore (x)
  :name "Hyperbolic arc-cosine"
  (log (+ x (sqrt (- (* x x) 1)))))