Average Error: 58.7 → 0.2
Time: 23.7s
Precision: 64
\[\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\]
\[\left(\mathsf{log1p}\left(\mathsf{fma}\left(x, x, x\right)\right) + \left(\log \left(\frac{1}{1 - \left(x \cdot x\right) \cdot x}\right) + \mathsf{log1p}\left(x\right)\right)\right) \cdot \frac{1}{2}\]
\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)
\left(\mathsf{log1p}\left(\mathsf{fma}\left(x, x, x\right)\right) + \left(\log \left(\frac{1}{1 - \left(x \cdot x\right) \cdot x}\right) + \mathsf{log1p}\left(x\right)\right)\right) \cdot \frac{1}{2}
double f(double x) {
        double r2331423 = 1.0;
        double r2331424 = 2.0;
        double r2331425 = r2331423 / r2331424;
        double r2331426 = x;
        double r2331427 = r2331423 + r2331426;
        double r2331428 = r2331423 - r2331426;
        double r2331429 = r2331427 / r2331428;
        double r2331430 = log(r2331429);
        double r2331431 = r2331425 * r2331430;
        return r2331431;
}

double f(double x) {
        double r2331432 = x;
        double r2331433 = fma(r2331432, r2331432, r2331432);
        double r2331434 = log1p(r2331433);
        double r2331435 = 1.0;
        double r2331436 = r2331432 * r2331432;
        double r2331437 = r2331436 * r2331432;
        double r2331438 = r2331435 - r2331437;
        double r2331439 = r2331435 / r2331438;
        double r2331440 = log(r2331439);
        double r2331441 = log1p(r2331432);
        double r2331442 = r2331440 + r2331441;
        double r2331443 = r2331434 + r2331442;
        double r2331444 = 0.5;
        double r2331445 = r2331443 * r2331444;
        return r2331445;
}

Error

Bits error versus x

Derivation

  1. Initial program 58.7

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

    \[\leadsto \color{blue}{\log \left(\frac{x + 1}{1 - x}\right) \cdot \frac{1}{2}}\]
  3. Using strategy rm
  4. Applied flip3--58.7

    \[\leadsto \log \left(\frac{x + 1}{\color{blue}{\frac{{1}^{3} - {x}^{3}}{1 \cdot 1 + \left(x \cdot x + 1 \cdot x\right)}}}\right) \cdot \frac{1}{2}\]
  5. Applied associate-/r/58.7

    \[\leadsto \log \color{blue}{\left(\frac{x + 1}{{1}^{3} - {x}^{3}} \cdot \left(1 \cdot 1 + \left(x \cdot x + 1 \cdot x\right)\right)\right)} \cdot \frac{1}{2}\]
  6. Applied log-prod58.7

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

    \[\leadsto \left(\color{blue}{\log \left(\frac{1 + x}{1 - \left(x \cdot x\right) \cdot x}\right)} + \log \left(1 \cdot 1 + \left(x \cdot x + 1 \cdot x\right)\right)\right) \cdot \frac{1}{2}\]
  8. Simplified50.6

    \[\leadsto \left(\log \left(\frac{1 + x}{1 - \left(x \cdot x\right) \cdot x}\right) + \color{blue}{\mathsf{log1p}\left(\mathsf{fma}\left(x, x, x\right)\right)}\right) \cdot \frac{1}{2}\]
  9. Using strategy rm
  10. Applied div-inv50.6

    \[\leadsto \left(\log \color{blue}{\left(\left(1 + x\right) \cdot \frac{1}{1 - \left(x \cdot x\right) \cdot x}\right)} + \mathsf{log1p}\left(\mathsf{fma}\left(x, x, x\right)\right)\right) \cdot \frac{1}{2}\]
  11. Applied log-prod50.6

    \[\leadsto \left(\color{blue}{\left(\log \left(1 + x\right) + \log \left(\frac{1}{1 - \left(x \cdot x\right) \cdot x}\right)\right)} + \mathsf{log1p}\left(\mathsf{fma}\left(x, x, x\right)\right)\right) \cdot \frac{1}{2}\]
  12. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019142 +o rules:numerics
(FPCore (x)
  :name "Hyperbolic arc-(co)tangent"
  (* (/ 1 2) (log (/ (+ 1 x) (- 1 x)))))