\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\left(\frac{2.0}{t} + \left(\frac{\frac{2.0}{t}}{z} + \frac{x}{y}\right)\right) - 2.0double f(double x, double y, double z, double t) {
double r43038795 = x;
double r43038796 = y;
double r43038797 = r43038795 / r43038796;
double r43038798 = 2.0;
double r43038799 = z;
double r43038800 = r43038799 * r43038798;
double r43038801 = 1.0;
double r43038802 = t;
double r43038803 = r43038801 - r43038802;
double r43038804 = r43038800 * r43038803;
double r43038805 = r43038798 + r43038804;
double r43038806 = r43038802 * r43038799;
double r43038807 = r43038805 / r43038806;
double r43038808 = r43038797 + r43038807;
return r43038808;
}
double f(double x, double y, double z, double t) {
double r43038809 = 2.0;
double r43038810 = t;
double r43038811 = r43038809 / r43038810;
double r43038812 = z;
double r43038813 = r43038811 / r43038812;
double r43038814 = x;
double r43038815 = y;
double r43038816 = r43038814 / r43038815;
double r43038817 = r43038813 + r43038816;
double r43038818 = r43038811 + r43038817;
double r43038819 = r43038818 - r43038809;
return r43038819;
}




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 div-inv0.1
Applied div-inv0.1
Applied distribute-rgt-out0.1
rmApplied associate-+r-0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019165
(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))))