\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\left(\frac{2}{t} - 2\right) + \frac{\frac{2}{t}}{z}\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r786472 = x;
double r786473 = y;
double r786474 = r786472 / r786473;
double r786475 = 2.0;
double r786476 = z;
double r786477 = r786476 * r786475;
double r786478 = 1.0;
double r786479 = t;
double r786480 = r786478 - r786479;
double r786481 = r786477 * r786480;
double r786482 = r786475 + r786481;
double r786483 = r786479 * r786476;
double r786484 = r786482 / r786483;
double r786485 = r786474 + r786484;
return r786485;
}
double f(double x, double y, double z, double t) {
double r786486 = 2.0;
double r786487 = t;
double r786488 = r786486 / r786487;
double r786489 = r786488 - r786486;
double r786490 = z;
double r786491 = r786488 / r786490;
double r786492 = r786489 + r786491;
double r786493 = x;
double r786494 = y;
double r786495 = r786493 / r786494;
double r786496 = r786492 + r786495;
return r786496;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.8
Simplified9.7
Taylor expanded around 0 0.1
rmApplied fma-udef0.1
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020047 +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))))