\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\mathsf{fma}\left(\frac{\frac{\mathsf{fma}\left(1, z, 1\right)}{z}}{t} - 1, 2, \frac{x}{y}\right)double f(double x, double y, double z, double t) {
double r539366 = x;
double r539367 = y;
double r539368 = r539366 / r539367;
double r539369 = 2.0;
double r539370 = z;
double r539371 = r539370 * r539369;
double r539372 = 1.0;
double r539373 = t;
double r539374 = r539372 - r539373;
double r539375 = r539371 * r539374;
double r539376 = r539369 + r539375;
double r539377 = r539373 * r539370;
double r539378 = r539376 / r539377;
double r539379 = r539368 + r539378;
return r539379;
}
double f(double x, double y, double z, double t) {
double r539380 = 1.0;
double r539381 = z;
double r539382 = 1.0;
double r539383 = fma(r539380, r539381, r539382);
double r539384 = r539383 / r539381;
double r539385 = t;
double r539386 = r539384 / r539385;
double r539387 = r539386 - r539382;
double r539388 = 2.0;
double r539389 = x;
double r539390 = y;
double r539391 = r539389 / r539390;
double r539392 = fma(r539387, r539388, r539391);
return r539392;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 9.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied times-frac0.1
Simplified0.1
rmApplied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019179 +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))))