\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{x}{y} + \frac{2}{t}\right) - \left(2 - \frac{\frac{2}{z}}{t}\right)double f(double x, double y, double z, double t) {
double r641078 = x;
double r641079 = y;
double r641080 = r641078 / r641079;
double r641081 = 2.0;
double r641082 = z;
double r641083 = r641082 * r641081;
double r641084 = 1.0;
double r641085 = t;
double r641086 = r641084 - r641085;
double r641087 = r641083 * r641086;
double r641088 = r641081 + r641087;
double r641089 = r641085 * r641082;
double r641090 = r641088 / r641089;
double r641091 = r641080 + r641090;
return r641091;
}
double f(double x, double y, double z, double t) {
double r641092 = x;
double r641093 = y;
double r641094 = r641092 / r641093;
double r641095 = 2.0;
double r641096 = t;
double r641097 = r641095 / r641096;
double r641098 = r641094 + r641097;
double r641099 = z;
double r641100 = r641095 / r641099;
double r641101 = r641100 / r641096;
double r641102 = r641095 - r641101;
double r641103 = r641098 - r641102;
return r641103;
}




Bits error versus x




Bits error versus y




Bits error versus z




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