\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\left(\left(\frac{2.0}{z \cdot t} + \frac{2.0}{t}\right) + \frac{x}{y}\right) - 2.0double f(double x, double y, double z, double t) {
double r37269508 = x;
double r37269509 = y;
double r37269510 = r37269508 / r37269509;
double r37269511 = 2.0;
double r37269512 = z;
double r37269513 = r37269512 * r37269511;
double r37269514 = 1.0;
double r37269515 = t;
double r37269516 = r37269514 - r37269515;
double r37269517 = r37269513 * r37269516;
double r37269518 = r37269511 + r37269517;
double r37269519 = r37269515 * r37269512;
double r37269520 = r37269518 / r37269519;
double r37269521 = r37269510 + r37269520;
return r37269521;
}
double f(double x, double y, double z, double t) {
double r37269522 = 2.0;
double r37269523 = z;
double r37269524 = t;
double r37269525 = r37269523 * r37269524;
double r37269526 = r37269522 / r37269525;
double r37269527 = r37269522 / r37269524;
double r37269528 = r37269526 + r37269527;
double r37269529 = x;
double r37269530 = y;
double r37269531 = r37269529 / r37269530;
double r37269532 = r37269528 + r37269531;
double r37269533 = r37269532 - r37269522;
return r37269533;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 8.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 8.8
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
rmApplied div-inv0.1
Applied associate-/l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019162 +o rules:numerics
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:herbie-target
(- (/ (+ (/ 2.0 z) 2.0) t) (- 2.0 (/ x y)))
(+ (/ x y) (/ (+ 2.0 (* (* z 2.0) (- 1.0 t))) (* t z))))