\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\left(\frac{\mathsf{fma}\left(1.0, 2.0 \cdot z, 2.0\right)}{t \cdot z} + \frac{x}{y}\right) - 2.0double f(double x, double y, double z, double t) {
double r35525838 = x;
double r35525839 = y;
double r35525840 = r35525838 / r35525839;
double r35525841 = 2.0;
double r35525842 = z;
double r35525843 = r35525842 * r35525841;
double r35525844 = 1.0;
double r35525845 = t;
double r35525846 = r35525844 - r35525845;
double r35525847 = r35525843 * r35525846;
double r35525848 = r35525841 + r35525847;
double r35525849 = r35525845 * r35525842;
double r35525850 = r35525848 / r35525849;
double r35525851 = r35525840 + r35525850;
return r35525851;
}
double f(double x, double y, double z, double t) {
double r35525852 = 1.0;
double r35525853 = 2.0;
double r35525854 = z;
double r35525855 = r35525853 * r35525854;
double r35525856 = fma(r35525852, r35525855, r35525853);
double r35525857 = t;
double r35525858 = r35525857 * r35525854;
double r35525859 = r35525856 / r35525858;
double r35525860 = x;
double r35525861 = y;
double r35525862 = r35525860 / r35525861;
double r35525863 = r35525859 + r35525862;
double r35525864 = r35525863 - r35525853;
return r35525864;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 8.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 8.9
Simplified0.1
rmApplied fma-udef0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019164 +o rules:numerics
(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))))