\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left({\left(\frac{\frac{2}{z} + 2}{t}\right)}^{1} - 2\right)double f(double x, double y, double z, double t) {
double r780697 = x;
double r780698 = y;
double r780699 = r780697 / r780698;
double r780700 = 2.0;
double r780701 = z;
double r780702 = r780701 * r780700;
double r780703 = 1.0;
double r780704 = t;
double r780705 = r780703 - r780704;
double r780706 = r780702 * r780705;
double r780707 = r780700 + r780706;
double r780708 = r780704 * r780701;
double r780709 = r780707 / r780708;
double r780710 = r780699 + r780709;
return r780710;
}
double f(double x, double y, double z, double t) {
double r780711 = x;
double r780712 = y;
double r780713 = r780711 / r780712;
double r780714 = 2.0;
double r780715 = z;
double r780716 = r780714 / r780715;
double r780717 = r780716 + r780714;
double r780718 = t;
double r780719 = r780717 / r780718;
double r780720 = 1.0;
double r780721 = pow(r780719, r780720);
double r780722 = r780721 - r780714;
double r780723 = r780713 + r780722;
return r780723;
}




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 pow10.1
Applied pow10.1
Applied pow-prod-down0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020039
(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))))