\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 r1331442 = x;
double r1331443 = y;
double r1331444 = r1331442 / r1331443;
double r1331445 = 2.0;
double r1331446 = z;
double r1331447 = r1331446 * r1331445;
double r1331448 = 1.0;
double r1331449 = t;
double r1331450 = r1331448 - r1331449;
double r1331451 = r1331447 * r1331450;
double r1331452 = r1331445 + r1331451;
double r1331453 = r1331449 * r1331446;
double r1331454 = r1331452 / r1331453;
double r1331455 = r1331444 + r1331454;
return r1331455;
}
double f(double x, double y, double z, double t) {
double r1331456 = x;
double r1331457 = y;
double r1331458 = r1331456 / r1331457;
double r1331459 = 1.0;
double r1331460 = 2.0;
double r1331461 = z;
double r1331462 = r1331460 / r1331461;
double r1331463 = r1331462 + r1331460;
double r1331464 = t;
double r1331465 = r1331463 / r1331464;
double r1331466 = r1331459 * r1331465;
double r1331467 = r1331466 - r1331460;
double r1331468 = r1331458 + r1331467;
return r1331468;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.5
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 2020065
(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))))