\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \mathsf{fma}\left(2, \frac{\frac{1}{t}}{z}, 2 \cdot \frac{1}{t} - 2\right)double f(double x, double y, double z, double t) {
double r3920 = x;
double r3921 = y;
double r3922 = r3920 / r3921;
double r3923 = 2.0;
double r3924 = z;
double r3925 = r3924 * r3923;
double r3926 = 1.0;
double r3927 = t;
double r3928 = r3926 - r3927;
double r3929 = r3925 * r3928;
double r3930 = r3923 + r3929;
double r3931 = r3927 * r3924;
double r3932 = r3930 / r3931;
double r3933 = r3922 + r3932;
return r3933;
}
double f(double x, double y, double z, double t) {
double r3934 = x;
double r3935 = y;
double r3936 = r3934 / r3935;
double r3937 = 2.0;
double r3938 = 1.0;
double r3939 = t;
double r3940 = r3938 / r3939;
double r3941 = z;
double r3942 = r3940 / r3941;
double r3943 = r3937 * r3940;
double r3944 = r3943 - r3937;
double r3945 = fma(r3937, r3942, r3944);
double r3946 = r3936 + r3945;
return r3946;
}




Bits error versus x




Bits error versus y




Bits error versus z




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