\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 r832300 = x;
double r832301 = y;
double r832302 = r832300 * r832301;
double r832303 = z;
double r832304 = t;
double r832305 = a;
double r832306 = r832304 - r832305;
double r832307 = r832303 * r832306;
double r832308 = r832302 + r832307;
double r832309 = b;
double r832310 = r832309 - r832301;
double r832311 = r832303 * r832310;
double r832312 = r832301 + r832311;
double r832313 = r832308 / r832312;
return r832313;
}
double f(double x, double y, double z, double t, double a, double b) {
double r832314 = x;
double r832315 = y;
double r832316 = r832314 * r832315;
double r832317 = z;
double r832318 = t;
double r832319 = a;
double r832320 = r832318 - r832319;
double r832321 = r832317 * r832320;
double r832322 = r832316 + r832321;
double r832323 = b;
double r832324 = r832323 - r832315;
double r832325 = r832317 * r832324;
double r832326 = r832315 + r832325;
double r832327 = r832322 / r832326;
return r832327;
}




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.4 |
|---|---|
| Target | 17.9 |
| Herbie | 23.4 |
Initial program 23.4
Final simplification23.4
herbie shell --seed 2020039
(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)))))