\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{2}{t} + \frac{\frac{2}{t}}{z}\right) + \left(\frac{x}{y} - 2\right)double f(double x, double y, double z, double t) {
double r514911 = x;
double r514912 = y;
double r514913 = r514911 / r514912;
double r514914 = 2.0;
double r514915 = z;
double r514916 = r514915 * r514914;
double r514917 = 1.0;
double r514918 = t;
double r514919 = r514917 - r514918;
double r514920 = r514916 * r514919;
double r514921 = r514914 + r514920;
double r514922 = r514918 * r514915;
double r514923 = r514921 / r514922;
double r514924 = r514913 + r514923;
return r514924;
}
double f(double x, double y, double z, double t) {
double r514925 = 2.0;
double r514926 = t;
double r514927 = r514925 / r514926;
double r514928 = z;
double r514929 = r514927 / r514928;
double r514930 = r514927 + r514929;
double r514931 = x;
double r514932 = y;
double r514933 = r514931 / r514932;
double r514934 = r514933 - r514925;
double r514935 = r514930 + r514934;
return r514935;
}




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 +o rules:numerics
(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))))