\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}double f(double x, double y, double z, double t, double a, double b) {
double r515593 = x;
double r515594 = y;
double r515595 = r515593 * r515594;
double r515596 = z;
double r515597 = t;
double r515598 = a;
double r515599 = r515597 - r515598;
double r515600 = r515596 * r515599;
double r515601 = r515595 + r515600;
double r515602 = b;
double r515603 = r515602 - r515594;
double r515604 = r515596 * r515603;
double r515605 = r515594 + r515604;
double r515606 = r515601 / r515605;
return r515606;
}
double f(double x, double y, double z, double t, double a, double b) {
double r515607 = x;
double r515608 = y;
double r515609 = r515607 * r515608;
double r515610 = z;
double r515611 = t;
double r515612 = a;
double r515613 = r515611 - r515612;
double r515614 = r515610 * r515613;
double r515615 = r515609 + r515614;
double r515616 = b;
double r515617 = r515616 - r515608;
double r515618 = r515610 * r515617;
double r515619 = r515608 + r515618;
double r515620 = r515615 / r515619;
return r515620;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 23.1 |
|---|---|
| Target | 17.7 |
| Herbie | 23.1 |
Initial program 23.1
Final simplification23.1
herbie shell --seed 2019291
(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)))))