\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{\frac{2}{t}}{z} + \left(\frac{2}{t} - 2\right)\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r461235 = x;
double r461236 = y;
double r461237 = r461235 / r461236;
double r461238 = 2.0;
double r461239 = z;
double r461240 = r461239 * r461238;
double r461241 = 1.0;
double r461242 = t;
double r461243 = r461241 - r461242;
double r461244 = r461240 * r461243;
double r461245 = r461238 + r461244;
double r461246 = r461242 * r461239;
double r461247 = r461245 / r461246;
double r461248 = r461237 + r461247;
return r461248;
}
double f(double x, double y, double z, double t) {
double r461249 = 2.0;
double r461250 = t;
double r461251 = r461249 / r461250;
double r461252 = z;
double r461253 = r461251 / r461252;
double r461254 = r461251 - r461249;
double r461255 = r461253 + r461254;
double r461256 = x;
double r461257 = y;
double r461258 = r461256 / r461257;
double r461259 = r461255 + r461258;
return r461259;
}




Bits error versus x




Bits error versus y




Bits error versus z




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