\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 \cdot z} + \frac{2}{t}\right) - 2\right)double f(double x, double y, double z, double t) {
double r841162 = x;
double r841163 = y;
double r841164 = r841162 / r841163;
double r841165 = 2.0;
double r841166 = z;
double r841167 = r841166 * r841165;
double r841168 = 1.0;
double r841169 = t;
double r841170 = r841168 - r841169;
double r841171 = r841167 * r841170;
double r841172 = r841165 + r841171;
double r841173 = r841169 * r841166;
double r841174 = r841172 / r841173;
double r841175 = r841164 + r841174;
return r841175;
}
double f(double x, double y, double z, double t) {
double r841176 = x;
double r841177 = y;
double r841178 = r841176 / r841177;
double r841179 = 2.0;
double r841180 = t;
double r841181 = z;
double r841182 = r841180 * r841181;
double r841183 = r841179 / r841182;
double r841184 = r841179 / r841180;
double r841185 = r841183 + r841184;
double r841186 = r841185 - r841179;
double r841187 = r841178 + r841186;
return r841187;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.2
Taylor expanded around 0 0.1
Simplified0.1
rmApplied distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020001
(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))))