\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\frac{2}{t} + \left(\frac{\frac{2}{t}}{z} - 2\right)\right)double f(double x, double y, double z, double t) {
double r584917 = x;
double r584918 = y;
double r584919 = r584917 / r584918;
double r584920 = 2.0;
double r584921 = z;
double r584922 = r584921 * r584920;
double r584923 = 1.0;
double r584924 = t;
double r584925 = r584923 - r584924;
double r584926 = r584922 * r584925;
double r584927 = r584920 + r584926;
double r584928 = r584924 * r584921;
double r584929 = r584927 / r584928;
double r584930 = r584919 + r584929;
return r584930;
}
double f(double x, double y, double z, double t) {
double r584931 = x;
double r584932 = y;
double r584933 = r584931 / r584932;
double r584934 = 2.0;
double r584935 = t;
double r584936 = r584934 / r584935;
double r584937 = z;
double r584938 = r584936 / r584937;
double r584939 = r584938 - r584934;
double r584940 = r584936 + r584939;
double r584941 = r584933 + r584940;
return r584941;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.6
Taylor expanded around 0 0.1
Simplified0.1
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019198 +o rules:numerics
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:herbie-target
(- (/ (+ (/ 2.0 z) 2.0) t) (- 2.0 (/ x y)))
(+ (/ x y) (/ (+ 2.0 (* (* z 2.0) (- 1.0 t))) (* t z))))