\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 r40046662 = x;
double r40046663 = y;
double r40046664 = r40046662 / r40046663;
double r40046665 = 2.0;
double r40046666 = z;
double r40046667 = r40046666 * r40046665;
double r40046668 = 1.0;
double r40046669 = t;
double r40046670 = r40046668 - r40046669;
double r40046671 = r40046667 * r40046670;
double r40046672 = r40046665 + r40046671;
double r40046673 = r40046669 * r40046666;
double r40046674 = r40046672 / r40046673;
double r40046675 = r40046664 + r40046674;
return r40046675;
}
double f(double x, double y, double z, double t) {
double r40046676 = 2.0;
double r40046677 = z;
double r40046678 = r40046676 / r40046677;
double r40046679 = t;
double r40046680 = r40046678 / r40046679;
double r40046681 = r40046680 - r40046676;
double r40046682 = r40046676 / r40046679;
double r40046683 = r40046681 + r40046682;
double r40046684 = x;
double r40046685 = y;
double r40046686 = r40046684 / r40046685;
double r40046687 = r40046683 + r40046686;
return r40046687;
}




Bits error versus x




Bits error versus y




Bits error versus z




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