Average Error: 29.0 → 0.3
Time: 17.9s
Precision: 64
\[\frac{x}{x + 1} - \frac{x + 1}{x - 1}\]
\[\frac{-1}{x + 1} \cdot \frac{\mathsf{fma}\left(3, x, 1\right)}{x - 1}\]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\frac{-1}{x + 1} \cdot \frac{\mathsf{fma}\left(3, x, 1\right)}{x - 1}
double f(double x) {
        double r61220 = x;
        double r61221 = 1.0;
        double r61222 = r61220 + r61221;
        double r61223 = r61220 / r61222;
        double r61224 = r61220 - r61221;
        double r61225 = r61222 / r61224;
        double r61226 = r61223 - r61225;
        return r61226;
}

double f(double x) {
        double r61227 = -1.0;
        double r61228 = x;
        double r61229 = 1.0;
        double r61230 = r61228 + r61229;
        double r61231 = r61227 / r61230;
        double r61232 = 3.0;
        double r61233 = fma(r61232, r61228, r61229);
        double r61234 = r61228 - r61229;
        double r61235 = r61233 / r61234;
        double r61236 = r61231 * r61235;
        return r61236;
}

Error

Bits error versus x

Derivation

  1. Initial program 29.0

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

    \[\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. Taylor expanded around 0 14.9

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

    \[\leadsto \frac{\color{blue}{-\mathsf{fma}\left(3, x, 1\right)}}{\left(x + 1\right) \cdot \left(x - 1\right)}\]
  6. Using strategy rm
  7. Applied neg-mul-114.9

    \[\leadsto \frac{\color{blue}{-1 \cdot \mathsf{fma}\left(3, x, 1\right)}}{\left(x + 1\right) \cdot \left(x - 1\right)}\]
  8. Applied times-frac0.3

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

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

Reproduce

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