\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\frac{1}{t} \cdot \left(\frac{2}{z} + 2\right) - 2\right)double f(double x, double y, double z, double t) {
double r794338 = x;
double r794339 = y;
double r794340 = r794338 / r794339;
double r794341 = 2.0;
double r794342 = z;
double r794343 = r794342 * r794341;
double r794344 = 1.0;
double r794345 = t;
double r794346 = r794344 - r794345;
double r794347 = r794343 * r794346;
double r794348 = r794341 + r794347;
double r794349 = r794345 * r794342;
double r794350 = r794348 / r794349;
double r794351 = r794340 + r794350;
return r794351;
}
double f(double x, double y, double z, double t) {
double r794352 = x;
double r794353 = y;
double r794354 = r794352 / r794353;
double r794355 = 1.0;
double r794356 = t;
double r794357 = r794355 / r794356;
double r794358 = 2.0;
double r794359 = z;
double r794360 = r794358 / r794359;
double r794361 = r794360 + r794358;
double r794362 = r794357 * r794361;
double r794363 = r794362 - r794358;
double r794364 = r794354 + r794363;
return r794364;
}




Bits error versus x




Bits error versus y




Bits error versus z




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