\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 r1235860 = x;
double r1235861 = y;
double r1235862 = r1235860 * r1235861;
double r1235863 = z;
double r1235864 = t;
double r1235865 = a;
double r1235866 = r1235864 - r1235865;
double r1235867 = r1235863 * r1235866;
double r1235868 = r1235862 + r1235867;
double r1235869 = b;
double r1235870 = r1235869 - r1235861;
double r1235871 = r1235863 * r1235870;
double r1235872 = r1235861 + r1235871;
double r1235873 = r1235868 / r1235872;
return r1235873;
}
double f(double x, double y, double z, double t, double a, double b) {
double r1235874 = x;
double r1235875 = y;
double r1235876 = r1235874 * r1235875;
double r1235877 = t;
double r1235878 = z;
double r1235879 = r1235877 * r1235878;
double r1235880 = r1235876 + r1235879;
double r1235881 = a;
double r1235882 = -r1235881;
double r1235883 = r1235878 * r1235882;
double r1235884 = r1235880 + r1235883;
double r1235885 = 1.0;
double r1235886 = b;
double r1235887 = r1235886 - r1235875;
double r1235888 = r1235878 * r1235887;
double r1235889 = r1235875 + r1235888;
double r1235890 = r1235885 / r1235889;
double r1235891 = r1235884 * r1235890;
return r1235891;
}




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)))))