\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{2}{t} + \frac{2}{t \cdot z}\right) + \left(\frac{x}{y} - 2\right)double f(double x, double y, double z, double t) {
double r1030921 = x;
double r1030922 = y;
double r1030923 = r1030921 / r1030922;
double r1030924 = 2.0;
double r1030925 = z;
double r1030926 = r1030925 * r1030924;
double r1030927 = 1.0;
double r1030928 = t;
double r1030929 = r1030927 - r1030928;
double r1030930 = r1030926 * r1030929;
double r1030931 = r1030924 + r1030930;
double r1030932 = r1030928 * r1030925;
double r1030933 = r1030931 / r1030932;
double r1030934 = r1030923 + r1030933;
return r1030934;
}
double f(double x, double y, double z, double t) {
double r1030935 = 2.0;
double r1030936 = t;
double r1030937 = r1030935 / r1030936;
double r1030938 = z;
double r1030939 = r1030936 * r1030938;
double r1030940 = r1030935 / r1030939;
double r1030941 = r1030937 + r1030940;
double r1030942 = x;
double r1030943 = y;
double r1030944 = r1030942 / r1030943;
double r1030945 = r1030944 - r1030935;
double r1030946 = r1030941 + r1030945;
return r1030946;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 8.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 8.8
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019351 +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))))