\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\frac{x}{y} + \left(\left(\frac{\sqrt{\sqrt{2.0}}}{\frac{t}{\frac{\sqrt{2.0}}{z}}} \cdot \sqrt{\sqrt{2.0}} + \frac{2.0}{t}\right) - 2.0\right)double f(double x, double y, double z, double t) {
double r40518968 = x;
double r40518969 = y;
double r40518970 = r40518968 / r40518969;
double r40518971 = 2.0;
double r40518972 = z;
double r40518973 = r40518972 * r40518971;
double r40518974 = 1.0;
double r40518975 = t;
double r40518976 = r40518974 - r40518975;
double r40518977 = r40518973 * r40518976;
double r40518978 = r40518971 + r40518977;
double r40518979 = r40518975 * r40518972;
double r40518980 = r40518978 / r40518979;
double r40518981 = r40518970 + r40518980;
return r40518981;
}
double f(double x, double y, double z, double t) {
double r40518982 = x;
double r40518983 = y;
double r40518984 = r40518982 / r40518983;
double r40518985 = 2.0;
double r40518986 = sqrt(r40518985);
double r40518987 = sqrt(r40518986);
double r40518988 = t;
double r40518989 = z;
double r40518990 = r40518986 / r40518989;
double r40518991 = r40518988 / r40518990;
double r40518992 = r40518987 / r40518991;
double r40518993 = r40518992 * r40518987;
double r40518994 = r40518985 / r40518988;
double r40518995 = r40518993 + r40518994;
double r40518996 = r40518995 - r40518985;
double r40518997 = r40518984 + r40518996;
return r40518997;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 8.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 8.9
Taylor expanded around 0 0.1
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied add-sqr-sqrt0.3
Applied times-frac0.2
Applied associate-/l*0.2
rmApplied *-un-lft-identity0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
Applied add-sqr-sqrt0.2
Applied add-sqr-sqrt0.2
Applied sqrt-prod0.1
Applied times-frac0.1
Applied times-frac0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019158
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:herbie-target
(- (/ (+ (/ 2.0 z) 2.0) t) (- 2.0 (/ x y)))
(+ (/ x y) (/ (+ 2.0 (* (* z 2.0) (- 1.0 t))) (* t z))))