\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 r841492 = x;
double r841493 = y;
double r841494 = r841492 * r841493;
double r841495 = z;
double r841496 = t;
double r841497 = a;
double r841498 = r841496 - r841497;
double r841499 = r841495 * r841498;
double r841500 = r841494 + r841499;
double r841501 = b;
double r841502 = r841501 - r841493;
double r841503 = r841495 * r841502;
double r841504 = r841493 + r841503;
double r841505 = r841500 / r841504;
return r841505;
}
double f(double x, double y, double z, double t, double a, double b) {
double r841506 = x;
double r841507 = y;
double r841508 = r841506 * r841507;
double r841509 = z;
double r841510 = t;
double r841511 = a;
double r841512 = r841510 - r841511;
double r841513 = r841509 * r841512;
double r841514 = r841508 + r841513;
double r841515 = b;
double r841516 = r841515 - r841507;
double r841517 = r841509 * r841516;
double r841518 = r841507 + r841517;
double r841519 = r841514 / r841518;
return r841519;
}




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.2 |
|---|---|
| Target | 18.0 |
| Herbie | 23.2 |
Initial program 23.2
Final simplification23.2
herbie shell --seed 2020001
(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)))))