\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\left(-2\right) + \left(\frac{2}{t} + \frac{\frac{2}{z}}{t}\right)\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r632160 = x;
double r632161 = y;
double r632162 = r632160 / r632161;
double r632163 = 2.0;
double r632164 = z;
double r632165 = r632164 * r632163;
double r632166 = 1.0;
double r632167 = t;
double r632168 = r632166 - r632167;
double r632169 = r632165 * r632168;
double r632170 = r632163 + r632169;
double r632171 = r632167 * r632164;
double r632172 = r632170 / r632171;
double r632173 = r632162 + r632172;
return r632173;
}
double f(double x, double y, double z, double t) {
double r632174 = 2.0;
double r632175 = -r632174;
double r632176 = t;
double r632177 = r632174 / r632176;
double r632178 = z;
double r632179 = r632174 / r632178;
double r632180 = r632179 / r632176;
double r632181 = r632177 + r632180;
double r632182 = r632175 + r632181;
double r632183 = x;
double r632184 = y;
double r632185 = r632183 / r632184;
double r632186 = r632182 + r632185;
return r632186;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.3
Simplified9.3
Taylor expanded around 0 0.1
Simplified0.1
rmApplied sub-neg0.1
Applied associate-+r+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019194
(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))))