Average Error: 7.3 → 4.6
Time: 22.9s
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)}{1 + x} - \frac{x \cdot \frac{1}{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)}{1 + x} - \frac{x \cdot \frac{1}{t \cdot z - x}}{x + 1}
double f(double x, double y, double z, double t) {
        double r360964 = x;
        double r360965 = y;
        double r360966 = z;
        double r360967 = r360965 * r360966;
        double r360968 = r360967 - r360964;
        double r360969 = t;
        double r360970 = r360969 * r360966;
        double r360971 = r360970 - r360964;
        double r360972 = r360968 / r360971;
        double r360973 = r360964 + r360972;
        double r360974 = 1.0;
        double r360975 = r360964 + r360974;
        double r360976 = r360973 / r360975;
        return r360976;
}

double f(double x, double y, double z, double t) {
        double r360977 = y;
        double r360978 = t;
        double r360979 = z;
        double r360980 = r360978 * r360979;
        double r360981 = x;
        double r360982 = r360980 - r360981;
        double r360983 = r360977 / r360982;
        double r360984 = fma(r360983, r360979, r360981);
        double r360985 = 1.0;
        double r360986 = r360985 + r360981;
        double r360987 = r360984 / r360986;
        double r360988 = 1.0;
        double r360989 = r360988 / r360982;
        double r360990 = r360981 * r360989;
        double r360991 = r360981 + r360985;
        double r360992 = r360990 / r360991;
        double r360993 = r360987 - r360992;
        return r360993;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original7.3
Target0.3
Herbie4.6
\[\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. Applied div-sub7.3

    \[\leadsto \color{blue}{\frac{x + \frac{y \cdot z}{t \cdot z - x}}{x + 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}}\]
  6. Simplified4.6

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)}{1 + x}} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\]
  7. Using strategy rm
  8. Applied div-inv4.6

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

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

Reproduce

herbie shell --seed 2019325 +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)))