\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\left(\left(\frac{\frac{2.0}{z}}{t} - 2.0\right) + \frac{2.0}{t}\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r38128290 = x;
double r38128291 = y;
double r38128292 = r38128290 / r38128291;
double r38128293 = 2.0;
double r38128294 = z;
double r38128295 = r38128294 * r38128293;
double r38128296 = 1.0;
double r38128297 = t;
double r38128298 = r38128296 - r38128297;
double r38128299 = r38128295 * r38128298;
double r38128300 = r38128293 + r38128299;
double r38128301 = r38128297 * r38128294;
double r38128302 = r38128300 / r38128301;
double r38128303 = r38128292 + r38128302;
return r38128303;
}
double f(double x, double y, double z, double t) {
double r38128304 = 2.0;
double r38128305 = z;
double r38128306 = r38128304 / r38128305;
double r38128307 = t;
double r38128308 = r38128306 / r38128307;
double r38128309 = r38128308 - r38128304;
double r38128310 = r38128304 / r38128307;
double r38128311 = r38128309 + r38128310;
double r38128312 = x;
double r38128313 = y;
double r38128314 = r38128312 / r38128313;
double r38128315 = r38128311 + r38128314;
return r38128315;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 8.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 8.8
Taylor expanded around 0 0.1
Simplified0.1
rmApplied div-inv0.1
rmApplied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019162
(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))))