\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\frac{x \cdot y + \left(z \cdot t + z \cdot \left(-a\right)\right)}{y + \left(b \cdot z + \left(-y\right) \cdot z\right)}double f(double x, double y, double z, double t, double a, double b) {
double r935903 = x;
double r935904 = y;
double r935905 = r935903 * r935904;
double r935906 = z;
double r935907 = t;
double r935908 = a;
double r935909 = r935907 - r935908;
double r935910 = r935906 * r935909;
double r935911 = r935905 + r935910;
double r935912 = b;
double r935913 = r935912 - r935904;
double r935914 = r935906 * r935913;
double r935915 = r935904 + r935914;
double r935916 = r935911 / r935915;
return r935916;
}
double f(double x, double y, double z, double t, double a, double b) {
double r935917 = x;
double r935918 = y;
double r935919 = r935917 * r935918;
double r935920 = z;
double r935921 = t;
double r935922 = r935920 * r935921;
double r935923 = a;
double r935924 = -r935923;
double r935925 = r935920 * r935924;
double r935926 = r935922 + r935925;
double r935927 = r935919 + r935926;
double r935928 = b;
double r935929 = r935928 * r935920;
double r935930 = -r935918;
double r935931 = r935930 * r935920;
double r935932 = r935929 + r935931;
double r935933 = r935918 + r935932;
double r935934 = r935927 / r935933;
return r935934;
}




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.8 |
|---|---|
| Target | 18.5 |
| Herbie | 23.9 |
Initial program 23.8
rmApplied sub-neg23.8
Applied distribute-lft-in23.8
rmApplied sub-neg23.8
Applied distribute-lft-in23.9
Simplified23.9
Simplified23.9
Final simplification23.9
herbie shell --seed 2020047
(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)))))