\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\frac{2}{t} + \frac{\frac{2}{t}}{z}\right) + \left(\frac{x}{y} - 2\right)double f(double x, double y, double z, double t) {
double r546848 = x;
double r546849 = y;
double r546850 = r546848 / r546849;
double r546851 = 2.0;
double r546852 = z;
double r546853 = r546852 * r546851;
double r546854 = 1.0;
double r546855 = t;
double r546856 = r546854 - r546855;
double r546857 = r546853 * r546856;
double r546858 = r546851 + r546857;
double r546859 = r546855 * r546852;
double r546860 = r546858 / r546859;
double r546861 = r546850 + r546860;
return r546861;
}
double f(double x, double y, double z, double t) {
double r546862 = 2.0;
double r546863 = t;
double r546864 = r546862 / r546863;
double r546865 = z;
double r546866 = r546864 / r546865;
double r546867 = r546864 + r546866;
double r546868 = x;
double r546869 = y;
double r546870 = r546868 / r546869;
double r546871 = r546870 - r546862;
double r546872 = r546867 + r546871;
return r546872;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.0 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.0
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019323 +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))))