Average Error: 30.7 → 0.3
Time: 22.1s
Precision: 64
\[\log \left(x + \sqrt{x \cdot x - 1}\right)\]
\[\log \left(\mathsf{fma}\left(2, x, \frac{\frac{-1}{2}}{x}\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, \frac{\frac{-1}{2}}{x}\right) - \frac{\frac{\frac{1}{8}}{x}}{x \cdot x}\right)
double f(double x) {
        double r1363184 = x;
        double r1363185 = r1363184 * r1363184;
        double r1363186 = 1.0;
        double r1363187 = r1363185 - r1363186;
        double r1363188 = sqrt(r1363187);
        double r1363189 = r1363184 + r1363188;
        double r1363190 = log(r1363189);
        return r1363190;
}

double f(double x) {
        double r1363191 = 2.0;
        double r1363192 = x;
        double r1363193 = -0.5;
        double r1363194 = r1363193 / r1363192;
        double r1363195 = fma(r1363191, r1363192, r1363194);
        double r1363196 = 0.125;
        double r1363197 = r1363196 / r1363192;
        double r1363198 = r1363192 * r1363192;
        double r1363199 = r1363197 / r1363198;
        double r1363200 = r1363195 - r1363199;
        double r1363201 = log(r1363200);
        return r1363201;
}

Error

Bits error versus x

Derivation

  1. Initial program 30.7

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

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

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

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

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

Reproduce

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