\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}}{t} + \frac{2}{t}\right) - 2\right)double f(double x, double y, double z, double t) {
double r570948 = x;
double r570949 = y;
double r570950 = r570948 / r570949;
double r570951 = 2.0;
double r570952 = z;
double r570953 = r570952 * r570951;
double r570954 = 1.0;
double r570955 = t;
double r570956 = r570954 - r570955;
double r570957 = r570953 * r570956;
double r570958 = r570951 + r570957;
double r570959 = r570955 * r570952;
double r570960 = r570958 / r570959;
double r570961 = r570950 + r570960;
return r570961;
}
double f(double x, double y, double z, double t) {
double r570962 = x;
double r570963 = y;
double r570964 = r570962 / r570963;
double r570965 = 2.0;
double r570966 = z;
double r570967 = r570965 / r570966;
double r570968 = t;
double r570969 = r570967 / r570968;
double r570970 = r570965 / r570968;
double r570971 = r570969 + r570970;
double r570972 = r570971 - r570965;
double r570973 = r570964 + r570972;
return r570973;
}




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 *-un-lft-identity0.1
Applied times-frac0.1
rmApplied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019209
(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))))