\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 r919289 = x;
double r919290 = y;
double r919291 = r919289 * r919290;
double r919292 = z;
double r919293 = t;
double r919294 = a;
double r919295 = r919293 - r919294;
double r919296 = r919292 * r919295;
double r919297 = r919291 + r919296;
double r919298 = b;
double r919299 = r919298 - r919290;
double r919300 = r919292 * r919299;
double r919301 = r919290 + r919300;
double r919302 = r919297 / r919301;
return r919302;
}
double f(double x, double y, double z, double t, double a, double b) {
double r919303 = x;
double r919304 = y;
double r919305 = r919303 * r919304;
double r919306 = z;
double r919307 = t;
double r919308 = a;
double r919309 = r919307 - r919308;
double r919310 = r919306 * r919309;
double r919311 = r919305 + r919310;
double r919312 = b;
double r919313 = r919312 - r919304;
double r919314 = r919306 * r919313;
double r919315 = r919304 + r919314;
double r919316 = r919311 / r919315;
return r919316;
}




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.0 |
|---|---|
| Target | 17.7 |
| Herbie | 23.0 |
Initial program 23.0
Final simplification23.0
herbie shell --seed 2020089
(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)))))