\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 \cdot z} + \frac{2}{t}\right) - 2\right)double f(double x, double y, double z, double t) {
double r726603 = x;
double r726604 = y;
double r726605 = r726603 / r726604;
double r726606 = 2.0;
double r726607 = z;
double r726608 = r726607 * r726606;
double r726609 = 1.0;
double r726610 = t;
double r726611 = r726609 - r726610;
double r726612 = r726608 * r726611;
double r726613 = r726606 + r726612;
double r726614 = r726610 * r726607;
double r726615 = r726613 / r726614;
double r726616 = r726605 + r726615;
return r726616;
}
double f(double x, double y, double z, double t) {
double r726617 = x;
double r726618 = y;
double r726619 = r726617 / r726618;
double r726620 = 2.0;
double r726621 = t;
double r726622 = z;
double r726623 = r726621 * r726622;
double r726624 = r726620 / r726623;
double r726625 = r726620 / r726621;
double r726626 = r726624 + r726625;
double r726627 = r726626 - r726620;
double r726628 = r726619 + r726627;
return r726628;
}




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
Taylor expanded around 0 0.1
Simplified0.1
rmApplied distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019322
(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))))