\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\left(\left(x \cdot y + t \cdot z\right) + z \cdot \left(-a\right)\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 r519053 = x;
double r519054 = y;
double r519055 = r519053 * r519054;
double r519056 = z;
double r519057 = t;
double r519058 = a;
double r519059 = r519057 - r519058;
double r519060 = r519056 * r519059;
double r519061 = r519055 + r519060;
double r519062 = b;
double r519063 = r519062 - r519054;
double r519064 = r519056 * r519063;
double r519065 = r519054 + r519064;
double r519066 = r519061 / r519065;
return r519066;
}
double f(double x, double y, double z, double t, double a, double b) {
double r519067 = x;
double r519068 = y;
double r519069 = r519067 * r519068;
double r519070 = t;
double r519071 = z;
double r519072 = r519070 * r519071;
double r519073 = r519069 + r519072;
double r519074 = a;
double r519075 = -r519074;
double r519076 = r519071 * r519075;
double r519077 = r519073 + r519076;
double r519078 = 1.0;
double r519079 = b;
double r519080 = r519079 - r519068;
double r519081 = r519071 * r519080;
double r519082 = r519068 + r519081;
double r519083 = r519078 / r519082;
double r519084 = r519077 * r519083;
return r519084;
}




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.3 |
|---|---|
| Target | 18.1 |
| Herbie | 23.3 |
Initial program 23.3
rmApplied div-inv23.3
rmApplied sub-neg23.3
Applied distribute-lft-in23.3
Applied associate-+r+23.3
Simplified23.3
Final simplification23.3
herbie shell --seed 2019303
(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)))))