\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(1 \cdot \frac{\frac{2}{z} + 2}{t} - 2\right)double f(double x, double y, double z, double t) {
double r792399 = x;
double r792400 = y;
double r792401 = r792399 / r792400;
double r792402 = 2.0;
double r792403 = z;
double r792404 = r792403 * r792402;
double r792405 = 1.0;
double r792406 = t;
double r792407 = r792405 - r792406;
double r792408 = r792404 * r792407;
double r792409 = r792402 + r792408;
double r792410 = r792406 * r792403;
double r792411 = r792409 / r792410;
double r792412 = r792401 + r792411;
return r792412;
}
double f(double x, double y, double z, double t) {
double r792413 = x;
double r792414 = y;
double r792415 = r792413 / r792414;
double r792416 = 1.0;
double r792417 = 2.0;
double r792418 = z;
double r792419 = r792417 / r792418;
double r792420 = r792419 + r792417;
double r792421 = t;
double r792422 = r792420 / r792421;
double r792423 = r792416 * r792422;
double r792424 = r792423 - r792417;
double r792425 = r792415 + r792424;
return r792425;
}




Bits error versus x




Bits error versus y




Bits error versus z




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