Average Error: 23.5 → 23.6
Time: 19.4s
Precision: 64
\[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
\[\left(\left(x \cdot y + z \cdot t\right) + \left(-a\right) \cdot z\right) \cdot \frac{1}{y + z \cdot \left(b - y\right)}\]
\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}
\left(\left(x \cdot y + z \cdot t\right) + \left(-a\right) \cdot z\right) \cdot \frac{1}{y + z \cdot \left(b - y\right)}
double f(double x, double y, double z, double t, double a, double b) {
        double r544927 = x;
        double r544928 = y;
        double r544929 = r544927 * r544928;
        double r544930 = z;
        double r544931 = t;
        double r544932 = a;
        double r544933 = r544931 - r544932;
        double r544934 = r544930 * r544933;
        double r544935 = r544929 + r544934;
        double r544936 = b;
        double r544937 = r544936 - r544928;
        double r544938 = r544930 * r544937;
        double r544939 = r544928 + r544938;
        double r544940 = r544935 / r544939;
        return r544940;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r544941 = x;
        double r544942 = y;
        double r544943 = r544941 * r544942;
        double r544944 = z;
        double r544945 = t;
        double r544946 = r544944 * r544945;
        double r544947 = r544943 + r544946;
        double r544948 = a;
        double r544949 = -r544948;
        double r544950 = r544949 * r544944;
        double r544951 = r544947 + r544950;
        double r544952 = 1.0;
        double r544953 = b;
        double r544954 = r544953 - r544942;
        double r544955 = r544944 * r544954;
        double r544956 = r544942 + r544955;
        double r544957 = r544952 / r544956;
        double r544958 = r544951 * r544957;
        return r544958;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original23.5
Target18.3
Herbie23.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.5

    \[\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.5

    \[\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.5

    \[\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.5

    \[\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.5

    \[\leadsto \frac{\color{blue}{\left(x \cdot y + z \cdot t\right)} + \left(-a\right) \cdot z}{y + z \cdot \left(b - y\right)}\]
  7. Using strategy rm
  8. Applied div-inv23.6

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

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

Reproduce

herbie shell --seed 2019209 
(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)))))