Average Error: 29.9 → 0.2
Time: 4.1s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[-1 \cdot \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\mathsf{fma}\left(3, x, 1\right)}{x + 1}\right)\right)}{x - 1}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
-1 \cdot \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\mathsf{fma}\left(3, x, 1\right)}{x + 1}\right)\right)}{x - 1}
double f(double x) {
        double r100420 = x;
        double r100421 = 1.0;
        double r100422 = r100420 + r100421;
        double r100423 = r100420 / r100422;
        double r100424 = r100420 - r100421;
        double r100425 = r100422 / r100424;
        double r100426 = r100423 - r100425;
        return r100426;
}

double f(double x) {
        double r100427 = -1.0;
        double r100428 = 3.0;
        double r100429 = x;
        double r100430 = 1.0;
        double r100431 = fma(r100428, r100429, r100430);
        double r100432 = r100429 + r100430;
        double r100433 = r100431 / r100432;
        double r100434 = log1p(r100433);
        double r100435 = expm1(r100434);
        double r100436 = r100429 - r100430;
        double r100437 = r100435 / r100436;
        double r100438 = r100427 * r100437;
        return r100438;
}

Error

Bits error versus x

Derivation

  1. Initial program 29.9

    \[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
  2. Using strategy rm
  3. Applied frac-sub31.0

    \[\leadsto \color{blue}{\frac{x \cdot \left(x - 1\right) - \left(x + 1\right) \cdot \left(x + 1\right)}{\left(x + 1\right) \cdot \left(x - 1\right)}}\]
  4. Simplified31.0

    \[\leadsto \frac{x \cdot \left(x - 1\right) - \left(x + 1\right) \cdot \left(x + 1\right)}{\color{blue}{x \cdot x - 1 \cdot 1}}\]
  5. Taylor expanded around 0 15.1

    \[\leadsto \frac{\color{blue}{-\left(3 \cdot x + 1\right)}}{x \cdot x - 1 \cdot 1}\]
  6. Using strategy rm
  7. Applied *-un-lft-identity15.1

    \[\leadsto \frac{-\left(3 \cdot x + 1\right)}{\color{blue}{1 \cdot \left(x \cdot x - 1 \cdot 1\right)}}\]
  8. Applied neg-mul-115.1

    \[\leadsto \frac{\color{blue}{-1 \cdot \left(3 \cdot x + 1\right)}}{1 \cdot \left(x \cdot x - 1 \cdot 1\right)}\]
  9. Applied times-frac15.1

    \[\leadsto \color{blue}{\frac{-1}{1} \cdot \frac{3 \cdot x + 1}{x \cdot x - 1 \cdot 1}}\]
  10. Simplified15.1

    \[\leadsto \color{blue}{-1} \cdot \frac{3 \cdot x + 1}{x \cdot x - 1 \cdot 1}\]
  11. Simplified0.2

    \[\leadsto -1 \cdot \color{blue}{\frac{\frac{\mathsf{fma}\left(3, x, 1\right)}{x + 1}}{x - 1}}\]
  12. Using strategy rm
  13. Applied expm1-log1p-u0.2

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

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

Reproduce

herbie shell --seed 2020060 +o rules:numerics
(FPCore (x)
  :name "Asymptote C"
  :precision binary64
  (- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))