\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\left(\left(x \cdot y + z \cdot t\right) + \left(-a\right) \cdot z\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 r544927 = x;
double r544928 = y;
double r544929 = r544927 * r544928;
double r544930 = z;
double r544931 = t;
double r544932 = a;
double r544933 = r544931 - r544932;
double r544934 = r544930 * r544933;
double r544935 = r544929 + r544934;
double r544936 = b;
double r544937 = r544936 - r544928;
double r544938 = r544930 * r544937;
double r544939 = r544928 + r544938;
double r544940 = r544935 / r544939;
return r544940;
}
double f(double x, double y, double z, double t, double a, double b) {
double r544941 = x;
double r544942 = y;
double r544943 = r544941 * r544942;
double r544944 = z;
double r544945 = t;
double r544946 = r544944 * r544945;
double r544947 = r544943 + r544946;
double r544948 = a;
double r544949 = -r544948;
double r544950 = r544949 * r544944;
double r544951 = r544947 + r544950;
double r544952 = 1.0;
double r544953 = b;
double r544954 = r544953 - r544942;
double r544955 = r544944 * r544954;
double r544956 = r544942 + r544955;
double r544957 = r544952 / r544956;
double r544958 = r544951 * r544957;
return r544958;
}




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.5 |
|---|---|
| Target | 18.3 |
| Herbie | 23.6 |
Initial program 23.5
rmApplied sub-neg23.5
Applied distribute-rgt-in23.5
Applied associate-+r+23.5
Simplified23.5
rmApplied div-inv23.6
Final simplification23.6
herbie shell --seed 2019209
(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)))))