\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{\frac{2}{t}}{z} + \left(\frac{2}{t} - 2\right)\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r545051 = x;
double r545052 = y;
double r545053 = r545051 / r545052;
double r545054 = 2.0;
double r545055 = z;
double r545056 = r545055 * r545054;
double r545057 = 1.0;
double r545058 = t;
double r545059 = r545057 - r545058;
double r545060 = r545056 * r545059;
double r545061 = r545054 + r545060;
double r545062 = r545058 * r545055;
double r545063 = r545061 / r545062;
double r545064 = r545053 + r545063;
return r545064;
}
double f(double x, double y, double z, double t) {
double r545065 = 2.0;
double r545066 = t;
double r545067 = r545065 / r545066;
double r545068 = z;
double r545069 = r545067 / r545068;
double r545070 = r545067 - r545065;
double r545071 = r545069 + r545070;
double r545072 = x;
double r545073 = y;
double r545074 = r545072 / r545073;
double r545075 = r545071 + r545074;
return r545075;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.3
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019326
(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))))