\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{\mathsf{fma}\left(2, 1, \frac{2}{z}\right)}{t} + \left(\frac{x}{y} - 2\right)double f(double x, double y, double z, double t) {
double r474946 = x;
double r474947 = y;
double r474948 = r474946 / r474947;
double r474949 = 2.0;
double r474950 = z;
double r474951 = r474950 * r474949;
double r474952 = 1.0;
double r474953 = t;
double r474954 = r474952 - r474953;
double r474955 = r474951 * r474954;
double r474956 = r474949 + r474955;
double r474957 = r474953 * r474950;
double r474958 = r474956 / r474957;
double r474959 = r474948 + r474958;
return r474959;
}
double f(double x, double y, double z, double t) {
double r474960 = 2.0;
double r474961 = 1.0;
double r474962 = z;
double r474963 = r474960 / r474962;
double r474964 = fma(r474960, r474961, r474963);
double r474965 = t;
double r474966 = r474964 / r474965;
double r474967 = x;
double r474968 = y;
double r474969 = r474967 / r474968;
double r474970 = r474969 - r474960;
double r474971 = r474966 + r474970;
return r474971;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 9.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.3
Simplified0.1
Final simplification0.1
herbie shell --seed 2019325 +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))))