\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} + \frac{\frac{2}{z}}{t}\right) - 2\right)double f(double x, double y, double z, double t) {
double r570679 = x;
double r570680 = y;
double r570681 = r570679 / r570680;
double r570682 = 2.0;
double r570683 = z;
double r570684 = r570683 * r570682;
double r570685 = 1.0;
double r570686 = t;
double r570687 = r570685 - r570686;
double r570688 = r570684 * r570687;
double r570689 = r570682 + r570688;
double r570690 = r570686 * r570683;
double r570691 = r570689 / r570690;
double r570692 = r570681 + r570691;
return r570692;
}
double f(double x, double y, double z, double t) {
double r570693 = x;
double r570694 = y;
double r570695 = r570693 / r570694;
double r570696 = 2.0;
double r570697 = t;
double r570698 = r570696 / r570697;
double r570699 = z;
double r570700 = r570696 / r570699;
double r570701 = r570700 / r570697;
double r570702 = r570698 + r570701;
double r570703 = r570702 - r570696;
double r570704 = r570695 + r570703;
return r570704;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.4 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.4
Taylor expanded around 0 0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied times-frac0.1
rmApplied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019199
(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))))