\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 r36000415 = x;
double r36000416 = y;
double r36000417 = r36000415 / r36000416;
double r36000418 = 2.0;
double r36000419 = z;
double r36000420 = r36000419 * r36000418;
double r36000421 = 1.0;
double r36000422 = t;
double r36000423 = r36000421 - r36000422;
double r36000424 = r36000420 * r36000423;
double r36000425 = r36000418 + r36000424;
double r36000426 = r36000422 * r36000419;
double r36000427 = r36000425 / r36000426;
double r36000428 = r36000417 + r36000427;
return r36000428;
}
double f(double x, double y, double z, double t) {
double r36000429 = 2.0;
double r36000430 = z;
double r36000431 = r36000429 / r36000430;
double r36000432 = t;
double r36000433 = r36000431 / r36000432;
double r36000434 = r36000433 - r36000429;
double r36000435 = r36000429 / r36000432;
double r36000436 = r36000434 + r36000435;
double r36000437 = x;
double r36000438 = y;
double r36000439 = r36000437 / r36000438;
double r36000440 = r36000436 + r36000439;
return r36000440;
}




Bits error versus x




Bits error versus y




Bits error versus z




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