\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\left(\frac{2}{t} - 2\right) + \frac{2}{t \cdot z}\right)double f(double x, double y, double z, double t) {
double r1076314 = x;
double r1076315 = y;
double r1076316 = r1076314 / r1076315;
double r1076317 = 2.0;
double r1076318 = z;
double r1076319 = r1076318 * r1076317;
double r1076320 = 1.0;
double r1076321 = t;
double r1076322 = r1076320 - r1076321;
double r1076323 = r1076319 * r1076322;
double r1076324 = r1076317 + r1076323;
double r1076325 = r1076321 * r1076318;
double r1076326 = r1076324 / r1076325;
double r1076327 = r1076316 + r1076326;
return r1076327;
}
double f(double x, double y, double z, double t) {
double r1076328 = x;
double r1076329 = y;
double r1076330 = r1076328 / r1076329;
double r1076331 = 2.0;
double r1076332 = t;
double r1076333 = r1076331 / r1076332;
double r1076334 = r1076333 - r1076331;
double r1076335 = z;
double r1076336 = r1076332 * r1076335;
double r1076337 = r1076331 / r1076336;
double r1076338 = r1076334 + r1076337;
double r1076339 = r1076330 + r1076338;
return r1076339;
}




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
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020042 +o rules:numerics
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:precision binary64
:herbie-target
(- (/ (+ (/ 2 z) 2) t) (- 2 (/ x y)))
(+ (/ x y) (/ (+ 2 (* (* z 2) (- 1 t))) (* t z))))