\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 r905109 = x;
double r905110 = y;
double r905111 = r905109 / r905110;
double r905112 = 2.0;
double r905113 = z;
double r905114 = r905113 * r905112;
double r905115 = 1.0;
double r905116 = t;
double r905117 = r905115 - r905116;
double r905118 = r905114 * r905117;
double r905119 = r905112 + r905118;
double r905120 = r905116 * r905113;
double r905121 = r905119 / r905120;
double r905122 = r905111 + r905121;
return r905122;
}
double f(double x, double y, double z, double t) {
double r905123 = x;
double r905124 = y;
double r905125 = r905123 / r905124;
double r905126 = 1.0;
double r905127 = 2.0;
double r905128 = z;
double r905129 = r905127 / r905128;
double r905130 = r905129 + r905127;
double r905131 = t;
double r905132 = r905130 / r905131;
double r905133 = r905126 * r905132;
double r905134 = r905133 - r905127;
double r905135 = r905125 + r905134;
return r905135;
}




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 2020021
(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))))