Average Error: 7.3 → 4.3
Time: 17.8s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}{x + 1}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}{x + 1}
double f(double x, double y, double z, double t) {
        double r532661 = x;
        double r532662 = y;
        double r532663 = z;
        double r532664 = r532662 * r532663;
        double r532665 = r532664 - r532661;
        double r532666 = t;
        double r532667 = r532666 * r532663;
        double r532668 = r532667 - r532661;
        double r532669 = r532665 / r532668;
        double r532670 = r532661 + r532669;
        double r532671 = 1.0;
        double r532672 = r532661 + r532671;
        double r532673 = r532670 / r532672;
        return r532673;
}

double f(double x, double y, double z, double t) {
        double r532674 = y;
        double r532675 = t;
        double r532676 = z;
        double r532677 = r532675 * r532676;
        double r532678 = x;
        double r532679 = r532677 - r532678;
        double r532680 = r532674 / r532679;
        double r532681 = fma(r532680, r532676, r532678);
        double r532682 = r532678 / r532679;
        double r532683 = r532681 - r532682;
        double r532684 = 1.0;
        double r532685 = r532678 + r532684;
        double r532686 = r532683 / r532685;
        return r532686;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original7.3
Target0.4
Herbie4.3
\[\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]

Derivation

  1. Initial program 7.3

    \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
  2. Using strategy rm
  3. Applied div-sub7.3

    \[\leadsto \frac{x + \color{blue}{\left(\frac{y \cdot z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}}{x + 1}\]
  4. Applied associate-+r-7.3

    \[\leadsto \frac{\color{blue}{\left(x + \frac{y \cdot z}{t \cdot z - x}\right) - \frac{x}{t \cdot z - x}}}{x + 1}\]
  5. Simplified4.3

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)} - \frac{x}{t \cdot z - x}}{x + 1}\]
  6. Final simplification4.3

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

Reproduce

herbie shell --seed 2019209 +o rules:numerics
(FPCore (x y z t)
  :name "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, A"
  :precision binary64

  :herbie-target
  (/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))

  (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))