\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{x}{y} + \frac{2}{t}\right) - \left(2 - \frac{2}{t \cdot z}\right)double f(double x, double y, double z, double t) {
double r867445 = x;
double r867446 = y;
double r867447 = r867445 / r867446;
double r867448 = 2.0;
double r867449 = z;
double r867450 = r867449 * r867448;
double r867451 = 1.0;
double r867452 = t;
double r867453 = r867451 - r867452;
double r867454 = r867450 * r867453;
double r867455 = r867448 + r867454;
double r867456 = r867452 * r867449;
double r867457 = r867455 / r867456;
double r867458 = r867447 + r867457;
return r867458;
}
double f(double x, double y, double z, double t) {
double r867459 = x;
double r867460 = y;
double r867461 = r867459 / r867460;
double r867462 = 2.0;
double r867463 = t;
double r867464 = r867462 / r867463;
double r867465 = r867461 + r867464;
double r867466 = z;
double r867467 = r867463 * r867466;
double r867468 = r867462 / r867467;
double r867469 = r867462 - r867468;
double r867470 = r867465 - r867469;
return r867470;
}




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 associate-+l-0.1
Applied associate-+r-0.1
Final simplification0.1
herbie shell --seed 2020045 +o rules:numerics
(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))))