\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{\frac{2}{z} + 2}{t} - \left(2 - \frac{x}{y}\right)double f(double x, double y, double z, double t) {
double r812417 = x;
double r812418 = y;
double r812419 = r812417 / r812418;
double r812420 = 2.0;
double r812421 = z;
double r812422 = r812421 * r812420;
double r812423 = 1.0;
double r812424 = t;
double r812425 = r812423 - r812424;
double r812426 = r812422 * r812425;
double r812427 = r812420 + r812426;
double r812428 = r812424 * r812421;
double r812429 = r812427 / r812428;
double r812430 = r812419 + r812429;
return r812430;
}
double f(double x, double y, double z, double t) {
double r812431 = 2.0;
double r812432 = z;
double r812433 = r812431 / r812432;
double r812434 = r812433 + r812431;
double r812435 = t;
double r812436 = r812434 / r812435;
double r812437 = x;
double r812438 = y;
double r812439 = r812437 / r812438;
double r812440 = r812431 - r812439;
double r812441 = r812436 - r812440;
return r812441;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.5
Taylor expanded around 0 0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied *-un-lft-identity0.1
Applied distribute-lft-out0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020018
(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))))