\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(1 \cdot \frac{\frac{2}{z} + 2}{t} - 2\right)double f(double x, double y, double z, double t) {
double r717130 = x;
double r717131 = y;
double r717132 = r717130 / r717131;
double r717133 = 2.0;
double r717134 = z;
double r717135 = r717134 * r717133;
double r717136 = 1.0;
double r717137 = t;
double r717138 = r717136 - r717137;
double r717139 = r717135 * r717138;
double r717140 = r717133 + r717139;
double r717141 = r717137 * r717134;
double r717142 = r717140 / r717141;
double r717143 = r717132 + r717142;
return r717143;
}
double f(double x, double y, double z, double t) {
double r717144 = x;
double r717145 = y;
double r717146 = r717144 / r717145;
double r717147 = 1.0;
double r717148 = 2.0;
double r717149 = z;
double r717150 = r717148 / r717149;
double r717151 = r717150 + r717148;
double r717152 = t;
double r717153 = r717151 / r717152;
double r717154 = r717147 * r717153;
double r717155 = r717154 - r717148;
double r717156 = r717146 + r717155;
return r717156;
}




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 *-un-lft-identity0.1
Applied times-frac0.1
Applied associate-*l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020083
(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))))