\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\left(\left(\frac{2.0}{t} + \frac{\frac{2.0}{t}}{z}\right) + \frac{x}{y}\right) - 2.0double f(double x, double y, double z, double t) {
double r33782398 = x;
double r33782399 = y;
double r33782400 = r33782398 / r33782399;
double r33782401 = 2.0;
double r33782402 = z;
double r33782403 = r33782402 * r33782401;
double r33782404 = 1.0;
double r33782405 = t;
double r33782406 = r33782404 - r33782405;
double r33782407 = r33782403 * r33782406;
double r33782408 = r33782401 + r33782407;
double r33782409 = r33782405 * r33782402;
double r33782410 = r33782408 / r33782409;
double r33782411 = r33782400 + r33782410;
return r33782411;
}
double f(double x, double y, double z, double t) {
double r33782412 = 2.0;
double r33782413 = t;
double r33782414 = r33782412 / r33782413;
double r33782415 = z;
double r33782416 = r33782414 / r33782415;
double r33782417 = r33782414 + r33782416;
double r33782418 = x;
double r33782419 = y;
double r33782420 = r33782418 / r33782419;
double r33782421 = r33782417 + r33782420;
double r33782422 = r33782421 - r33782412;
return r33782422;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.1
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019163 +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))))