\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 r636041 = x;
double r636042 = y;
double r636043 = r636041 / r636042;
double r636044 = 2.0;
double r636045 = z;
double r636046 = r636045 * r636044;
double r636047 = 1.0;
double r636048 = t;
double r636049 = r636047 - r636048;
double r636050 = r636046 * r636049;
double r636051 = r636044 + r636050;
double r636052 = r636048 * r636045;
double r636053 = r636051 / r636052;
double r636054 = r636043 + r636053;
return r636054;
}
double f(double x, double y, double z, double t) {
double r636055 = 2.0;
double r636056 = t;
double r636057 = r636055 / r636056;
double r636058 = z;
double r636059 = r636057 / r636058;
double r636060 = r636057 - r636055;
double r636061 = r636059 + r636060;
double r636062 = x;
double r636063 = y;
double r636064 = r636062 / r636063;
double r636065 = r636061 + r636064;
return r636065;
}




Bits error versus x




Bits error versus y




Bits error versus z




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