Average Error: 7.4 → 2.3
Time: 15.3s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\frac{\frac{\mathsf{fma}\left(y, \frac{z}{\mathsf{fma}\left(z, t, -x\right)}, x\right) - \frac{x}{\mathsf{fma}\left(z, t, -x\right)}}{x + 1}}{x - 1} \cdot \left(x - 1\right)\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\frac{\frac{\mathsf{fma}\left(y, \frac{z}{\mathsf{fma}\left(z, t, -x\right)}, x\right) - \frac{x}{\mathsf{fma}\left(z, t, -x\right)}}{x + 1}}{x - 1} \cdot \left(x - 1\right)
double f(double x, double y, double z, double t) {
        double r812694 = x;
        double r812695 = y;
        double r812696 = z;
        double r812697 = r812695 * r812696;
        double r812698 = r812697 - r812694;
        double r812699 = t;
        double r812700 = r812699 * r812696;
        double r812701 = r812700 - r812694;
        double r812702 = r812698 / r812701;
        double r812703 = r812694 + r812702;
        double r812704 = 1.0;
        double r812705 = r812694 + r812704;
        double r812706 = r812703 / r812705;
        return r812706;
}

double f(double x, double y, double z, double t) {
        double r812707 = y;
        double r812708 = z;
        double r812709 = t;
        double r812710 = x;
        double r812711 = -r812710;
        double r812712 = fma(r812708, r812709, r812711);
        double r812713 = r812708 / r812712;
        double r812714 = fma(r812707, r812713, r812710);
        double r812715 = r812710 / r812712;
        double r812716 = r812714 - r812715;
        double r812717 = 1.0;
        double r812718 = r812710 + r812717;
        double r812719 = r812716 / r812718;
        double r812720 = r812710 - r812717;
        double r812721 = r812719 / r812720;
        double r812722 = r812721 * r812720;
        return r812722;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

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

Derivation

  1. Initial program 7.4

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

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

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

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

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

    \[\leadsto \frac{x + \left(y \cdot \frac{z}{\mathsf{fma}\left(z, t, -x\right)} - x \cdot \frac{1}{\mathsf{fma}\left(z, t, -x\right)}\right)}{\color{blue}{\frac{x \cdot x - 1 \cdot 1}{x - 1}}}\]
  10. Applied associate-/r/18.6

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

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

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

Reproduce

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