\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{2}{t \cdot z} + \frac{2}{t}\right) + \left(\frac{x}{y} - 2\right)double f(double x, double y, double z, double t) {
double r499281 = x;
double r499282 = y;
double r499283 = r499281 / r499282;
double r499284 = 2.0;
double r499285 = z;
double r499286 = r499285 * r499284;
double r499287 = 1.0;
double r499288 = t;
double r499289 = r499287 - r499288;
double r499290 = r499286 * r499289;
double r499291 = r499284 + r499290;
double r499292 = r499288 * r499285;
double r499293 = r499291 / r499292;
double r499294 = r499283 + r499293;
return r499294;
}
double f(double x, double y, double z, double t) {
double r499295 = 2.0;
double r499296 = t;
double r499297 = z;
double r499298 = r499296 * r499297;
double r499299 = r499295 / r499298;
double r499300 = r499295 / r499296;
double r499301 = r499299 + r499300;
double r499302 = x;
double r499303 = y;
double r499304 = r499302 / r499303;
double r499305 = r499304 - r499295;
double r499306 = r499301 + r499305;
return r499306;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.2
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019322 +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))))