Average Error: 23.0 → 21.6
Time: 18.7s
Precision: 64
\[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
\[\mathsf{fma}\left(x, y, t \cdot z\right) \cdot \frac{1}{\mathsf{fma}\left(z, b - y, y\right)} - \frac{z}{\mathsf{fma}\left(z, b - y, y\right)} \cdot a\]
\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}
\mathsf{fma}\left(x, y, t \cdot z\right) \cdot \frac{1}{\mathsf{fma}\left(z, b - y, y\right)} - \frac{z}{\mathsf{fma}\left(z, b - y, y\right)} \cdot a
double f(double x, double y, double z, double t, double a, double b) {
        double r508006 = x;
        double r508007 = y;
        double r508008 = r508006 * r508007;
        double r508009 = z;
        double r508010 = t;
        double r508011 = a;
        double r508012 = r508010 - r508011;
        double r508013 = r508009 * r508012;
        double r508014 = r508008 + r508013;
        double r508015 = b;
        double r508016 = r508015 - r508007;
        double r508017 = r508009 * r508016;
        double r508018 = r508007 + r508017;
        double r508019 = r508014 / r508018;
        return r508019;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r508020 = x;
        double r508021 = y;
        double r508022 = t;
        double r508023 = z;
        double r508024 = r508022 * r508023;
        double r508025 = fma(r508020, r508021, r508024);
        double r508026 = 1.0;
        double r508027 = b;
        double r508028 = r508027 - r508021;
        double r508029 = fma(r508023, r508028, r508021);
        double r508030 = r508026 / r508029;
        double r508031 = r508025 * r508030;
        double r508032 = r508023 / r508029;
        double r508033 = a;
        double r508034 = r508032 * r508033;
        double r508035 = r508031 - r508034;
        return r508035;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Target

Original23.0
Target17.8
Herbie21.6
\[\frac{z \cdot t + y \cdot x}{y + z \cdot \left(b - y\right)} - \frac{a}{\left(b - y\right) + \frac{y}{z}}\]

Derivation

  1. Initial program 23.0

    \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
  2. Using strategy rm
  3. Applied sub-neg23.0

    \[\leadsto \frac{x \cdot y + z \cdot \color{blue}{\left(t + \left(-a\right)\right)}}{y + z \cdot \left(b - y\right)}\]
  4. Applied distribute-rgt-in23.0

    \[\leadsto \frac{x \cdot y + \color{blue}{\left(t \cdot z + \left(-a\right) \cdot z\right)}}{y + z \cdot \left(b - y\right)}\]
  5. Applied associate-+r+23.0

    \[\leadsto \frac{\color{blue}{\left(x \cdot y + t \cdot z\right) + \left(-a\right) \cdot z}}{y + z \cdot \left(b - y\right)}\]
  6. Simplified23.0

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, y, z \cdot t\right)} + \left(-a\right) \cdot z}{y + z \cdot \left(b - y\right)}\]
  7. Using strategy rm
  8. Applied distribute-lft-neg-out23.0

    \[\leadsto \frac{\mathsf{fma}\left(x, y, z \cdot t\right) + \color{blue}{\left(-a \cdot z\right)}}{y + z \cdot \left(b - y\right)}\]
  9. Applied unsub-neg23.0

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, y, z \cdot t\right) - a \cdot z}}{y + z \cdot \left(b - y\right)}\]
  10. Applied div-sub23.0

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(x, y, z \cdot t\right)}{y + z \cdot \left(b - y\right)} - \frac{a \cdot z}{y + z \cdot \left(b - y\right)}}\]
  11. Simplified23.0

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(x, y, t \cdot z\right)}{\mathsf{fma}\left(z, b - y, y\right)}} - \frac{a \cdot z}{y + z \cdot \left(b - y\right)}\]
  12. Simplified22.9

    \[\leadsto \frac{\mathsf{fma}\left(x, y, t \cdot z\right)}{\mathsf{fma}\left(z, b - y, y\right)} - \color{blue}{\frac{z}{\frac{\mathsf{fma}\left(z, b - y, y\right)}{a}}}\]
  13. Using strategy rm
  14. Applied associate-/r/21.5

    \[\leadsto \frac{\mathsf{fma}\left(x, y, t \cdot z\right)}{\mathsf{fma}\left(z, b - y, y\right)} - \color{blue}{\frac{z}{\mathsf{fma}\left(z, b - y, y\right)} \cdot a}\]
  15. Using strategy rm
  16. Applied div-inv21.6

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, y, t \cdot z\right) \cdot \frac{1}{\mathsf{fma}\left(z, b - y, y\right)}} - \frac{z}{\mathsf{fma}\left(z, b - y, y\right)} \cdot a\]
  17. Final simplification21.6

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

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z t a b)
  :name "Development.Shake.Progress:decay from shake-0.15.5"
  :precision binary64

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

  (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))