\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\left(\frac{2}{t \cdot z} + \frac{2}{t}\right) - 2\right)double f(double x, double y, double z, double t) {
double r689711 = x;
double r689712 = y;
double r689713 = r689711 / r689712;
double r689714 = 2.0;
double r689715 = z;
double r689716 = r689715 * r689714;
double r689717 = 1.0;
double r689718 = t;
double r689719 = r689717 - r689718;
double r689720 = r689716 * r689719;
double r689721 = r689714 + r689720;
double r689722 = r689718 * r689715;
double r689723 = r689721 / r689722;
double r689724 = r689713 + r689723;
return r689724;
}
double f(double x, double y, double z, double t) {
double r689725 = x;
double r689726 = y;
double r689727 = r689725 / r689726;
double r689728 = 2.0;
double r689729 = t;
double r689730 = z;
double r689731 = r689729 * r689730;
double r689732 = r689728 / r689731;
double r689733 = r689728 / r689729;
double r689734 = r689732 + r689733;
double r689735 = r689734 - r689728;
double r689736 = r689727 + r689735;
return r689736;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.1
Taylor expanded around 0 0.1
Simplified0.1
rmApplied distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019362
(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))))