\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\frac{\sqrt{1}}{1} \cdot \frac{\frac{2}{z} + 2}{t} - 2\right)double f(double x, double y, double z, double t) {
double r728925 = x;
double r728926 = y;
double r728927 = r728925 / r728926;
double r728928 = 2.0;
double r728929 = z;
double r728930 = r728929 * r728928;
double r728931 = 1.0;
double r728932 = t;
double r728933 = r728931 - r728932;
double r728934 = r728930 * r728933;
double r728935 = r728928 + r728934;
double r728936 = r728932 * r728929;
double r728937 = r728935 / r728936;
double r728938 = r728927 + r728937;
return r728938;
}
double f(double x, double y, double z, double t) {
double r728939 = x;
double r728940 = y;
double r728941 = r728939 / r728940;
double r728942 = 1.0;
double r728943 = sqrt(r728942);
double r728944 = r728943 / r728942;
double r728945 = 2.0;
double r728946 = z;
double r728947 = r728945 / r728946;
double r728948 = r728947 + r728945;
double r728949 = t;
double r728950 = r728948 / r728949;
double r728951 = r728944 * r728950;
double r728952 = r728951 - r728945;
double r728953 = r728941 + r728952;
return r728953;
}




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
Taylor expanded around 0 0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied add-sqr-sqrt0.1
Applied times-frac0.1
Applied associate-*l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020064
(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))))